PDA

Просмотр полной версии : TrueType Fonts. Вторая серия.


Egoritch
02.06.2004, 18:36
Господа, опять прошу помощи.
Короче ситуация такая. Есть обычный шрифт каллиграф - виндовый трутайповый. Есть какие-то прямоугольники, в чьей книге судеб записано, что они станут кнопками с левой стороны жкрана на сайте.
На локальном хосте - всё рисуется (на приаттаченом рисунке - в первой части под выбором языка, слева такие менюшки "Японоатлас", "Японожизнь" и пр.). Без проблем совсем. В зависимости от того, как конфигурируется сайт - создаются соответствующие надписи на кнопках.
Закидываю уже всё на ту площадку, где оно всё будет.
Со старта рисуется то, что видно на рисунке в той части, где цифра 2. Просто квадратики. Обратите внимание на самые нижние три квадратика. Это - FAQ, написано английскими букивками. Квадратики...
Я, если возникают подобные проблемы, вначале задалбывают ребят в асе. И сейчас всех задолбал. Многие сразу стали ругаться, мол, RTFM! Перекодировать надо в UTF8. Показываю им функцию:

function win_utf8($string1){
$string1=convert_cyr_string($string1, "w", "i");
$stringout="";
for($i=0;$i<strlen($string1);$i++){
$char = ord($string1[$i]);
if ($char<=175)echo "-";
$stringout .= ($char>175)?"&#".(1040+($char-176)).";":$string1[$i];
}
echo $stringout;
return $stringout;
}

и её вызов:

$nBug=win_utf8($tempName);imagettftext($im,12,0,9,13,$front,"call.ttf",$nBug);

Говорят: ну да, оно....
Обратите внимание на то, что в функции два эха, одно вызывается, если символ не изменяется - английский, цифра и прочее. Второе эхо рисует то, что получилось. Результат виден на третьей части аттача. Как ни странно, но он рисует прямо русские символы. Но он точно меняет их, конвертит в UTF - если я каждому символу подставляю не & #, а # # чтобы не конвертилось, то он мне рисует паровозы из цифр.
Самое странное, что не рисуются ни английские буквы ни цифры.
ЗЫ: nagash, перечитал все комментарии, что ты давал линки - никто с таким не сталкивался. Или, если сталкивались - быстро по-ходу решили.

nagash
02.06.2004, 19:08
да...
практически всё правильно...
кроме МАААААААААЛЕНЬКОГО такого "НО"
=)
твоя функция практически правильно всё доленат...
а вот эта функция -


function win2utf($str) {
$utf = "";
for($i = 0; $i < strlen($str); $i++)
{
$donotrecode = false;
$c = ord(substr($str, $i, 1));
if ($c == 0xA8) $res = 0xD081;
elseif ($c == 0xB8) $res = 0xD191;
elseif ($c < 0xC0) $donotrecode = true;
elseif ($c < 0xF0) $res = $c + 0xCFD0;
else $res = $c + 0xD090;
$utf .= ($donotrecode) ? chr($c) : (chr($res >> 8) . chr($res & 0xff));
}
return $utf;
}

делает ЮТФ =)
для примера делаешь вот что

$a = 'ффффыыыввв';
echo win_utf8($a).'<br>'.win2utf($a);

и сличаешь результат...
я думаю ты будешь приятно удивлён =)
удачи...

Egoritch
02.06.2004, 19:39
nagash, кнопки так же пусты, как и раньше. Точнее - квадратики есть.
http://www.yaponosite.com
Значит не в утф дело?
Я приаттачил фонт - были мнения, что он плохой. Только переименовал его в зип.
Не знаю.
Ну, буду ещё ковырять...

А твоя функция, конечно, круче

kompadre
02.06.2004, 21:52
Твой шрвит не закодирован в юникод таблицу. Попробуй аттач перекодированный в фонтлабе.

Egoritch
02.06.2004, 22:20
как же много я ещё не знаю...
kompadre - спасибо. Оно.

Спасибо, ребят!