SOFTSOUL: Юзание нестандартных шрифтов
Форум веб дизайна - разработка и создание сайтов, сделать сайт, раскрутка сайта! Форум веб разработчиков дизайн студии SOFTSOUL - общение профессиональных программистов, дизайнеров и веб-промоутеров! Работа - как найти работу за рубежом! Отдых в Крыму и Недвижимость в Крыму! > Форумы веб-разработчиков сайтов > Веб программирование на Java Script и Action Script
Satir
Сразу все противники и критики нестандартных шрифтов могут нажать кнопочку '<-' на своей клавиатуре, эта статья не для таких, а смысл ее в следующем
Дело в том что при подрубании(имеется ввиду шрифт которого нет на тачке юзера) шрифта его вес может быть немал, кроме того встречается куча проблем при
font-family:url(..);
Я сам непробывал, да и зачем оно надо то. Ведь те кто говорят (они самые - противники и критики smile.gif ) что нестандартные шрифты вред для общества (нечетабельны и тд и др) абсолютно правы! Ненужно его использовать в качестве контентного шрифта
А где же его тогда используют - в основном - это заголовки, и действительно зачем грузить целый ШРИФТ юзеру на тачку ради какогото мелкого заголовка - проще сделать пнгшку или гифку и непарится, как все в основном и делают.
Но тут есть минус (минусов может быть и много, но я бы наместе юзера наверно ощутил бы этот один)
Вот приставте есть движок, в нем естественно есть управление заголовком, а дизайнер когда рисовал этот заголовок, подрубил суперпуперизвратнопорно шрифт. Вот. Что обычно делается, в заголовок подрубается картинка и.. все! А заказчег говорит - мне бы там поменять вот заголовок - вы ему ок - открываем фотопоп, чикс и готово, он опять - и опять - жесть какаята! А если заказчег извращенец blink.gif и говорит - я вам такие бабки плачу, и немагу поменять этот заголовок!?
Все это конечно преувеличениек но есть доля истины
Короче все можно решить простым яваскриптом, смысл таков что только присвоев класс тексту, он автоматом становится картиночным, - недостатки - это то что нельзя пооминять его цвет, ну и еще конечно есть - но для одного дизайно вполне можно юзать, думаю.. )) и то только для мелкого кол-ва теста ибо сдесь без классной подгрузки и браузер при большом кол-ве может висануться

Вот код:

1. как обычно функция инициализации .. млин ну и слово хрен выговариш )
CODE

function init() {
var dir = '...'; // путь к папке где лежат картинки символов
var parent = document.body; // здеся моно указывать с какого объекта по иерархии следует искать класс
var clses = getElementsByClassName('main', parent); // о - класс назавем main
var liters = initFontsArray(); // инициализация масива данных о символах
//там не все но если че - то ведь без проблем добавить моно
// что готово так это все просто - я про порядок, - qwerty ))

for (var i=0; i<clses.length; i++) replaceFonts(dir, liters, clses[i]);
// эта функция и заменяет каждый символ картинкой
}


2. Эту функцию я уже расписал (помойму в предыдущей статье)

CODE

function getElementsByClassName(cls, parent){
var clses = [];
if (parent == undefined) parent = document.body;
var childs = parent.childNodes;
for (var i=0; i<childs.length; i++) {
 if (childs[i].className != undefined)
  if ((childs[i].className).indexOf(cls)>=0) clses[clses.length] = childs[i];
 if (childs[i].childNodes.length > 0) {
  var childclses = [];
  childclses = getElementsByClassName(cls, childs[i]);
  clses = clses.concat(childclses);
 }
}
return clses;
}


3. Вот эта функция самая главная, ибо именно она подрубает имг, она не универсальна конечно - но доуверсаливать мне нет необходимости если комуто есть - то плиз выкладывайте абгрейд )), смогу помочь, но не писать за когото wink.gif

CODE
function replaceFonts(dir, liters, elm) {
var src = dir + 'img_';

var childs = elm.childNodes;
for (var i=0; i<childs.length; i++)
 if (childs[i].nodeName == '#text') {
  var dv = childs[i].nodeValue;
  var tmpspan = document.createElement('SPAN');
 
  for (var ii=0; ii<dv.length; ii++) {
   var liter = dv.charAt(ii);

   if (liter == ' ') {tmpspan.innerHTML += '&nbsp;'; continue;}
   var img = document.createElement('IMG');
   img.src = src + (liters[liter] + 1) + '.gif';

   tmpspan.appendChild(img);
  }
  childs[i].parentNode.replaceChild(tmpspan, childs[i])
 }
}


4. Ну и самая - я бы сказал - нудная функция - Эт вот - объявление картинок:
CODE

function initFontsArray() {
var mas = [];

mas['q'] = 0;
mas['w'] = 1;
mas['e'] = 2;
mas['r'] = 3;
mas['t'] = 4;
...
mas['Ь'] = 123;
mas['Б'] = 124;
mas['Ю'] = 125;

return mas;
}


Проще конечно подрубить файлики в атаче и все наглядно увидеть, да... и насчер рус яз и специальных символов просьба мозг мне не тревожить, ибо это оно и есть, то что я сказал недароботоное ,)
Рус яз там есть конено, ну вот только с кодировкой не все прощитано, вот.

да.. и код который нуна в HTML вставить
CODE

<script language=JavaScript  type="text/javascript">
onload = init;
</script>


ЗЫ
ПОСЛЕ СКАЧИВАНИЯ (если таково будет) ПЕРЕИМЕНУЙТЕ html НА RAR и откройте как архив
Satir
Сделал кое какие исправления, для удобности со спец символами и др.
Хочу поделится )
Исправлена сама суть обработки. Теперь привязка идет не к символам а к их аски кодам..
Используемая кодировка заменена на ютф 8, для юзания не только рус но и немецких символов, подключить которые нет особой сложности.

CODE

function replaceFonts(dir, liters, elm) {
var src = dir;

var childs = elm.childNodes;
for (var i=0; i<childs.length; i++)
 if (childs[i].nodeName == '#text') {
  var dv = childs[i].nodeValue;
  var tmpspan = document.createElement('SPAN');
 
  for (var ii=0; ii<dv.length; ii++) {

  var liter = dv.charCodeAt(ii);
   if (liter>0xFF) liter-=0x350; // это для рус символов

   
   if (liter == 32) {tmpspan.innerHTML += '&nbsp;'; continue;}
    if (liters[liter] != undefined) {
    var img = document.createElement('IMG');
    img.src = src + liters[liter] + '.gif';
    tmpspan.appendChild(img);
   }
  }
  //alert(childs.length);
  childs[i].parentNode.replaceChild(tmpspan, childs[i])
 }
}


и естественно изменился массив имен картинок, в который вы можете обохзначить те имена, какие у вас на имени символа, я назвал все картинки соответственно их аски коду.

CODE

function initFontsArray() {
var mas = [];

mas[113] = 113;
mas[119] = 119;
mas[101] = 101;
mas[114] = 114;
mas[116] = 116;
mas[121] = 121;
mas[117] = 117;
mas[105] = 105;
mas[111] = 111;
mas[112] = 112;
mas[97] = 97;
mas[115] = 115;
mas[100] = 100;
mas[102] = 102;
mas[103] = 103;
mas[104] = 104;
mas[106] = 106;
mas[107] = 107;
mas[108] = 108;
mas[122] = 122;
mas[120] = 120;
mas[99] = 99;
mas[118] = 118;
mas[98] = 98;
mas[110] = 110;
mas[109] = 109;
mas[81] = 81;
mas[87] = 87;
mas[69] = 69;
mas[82] = 82;
mas[84] = 84;
mas[89] = 89;
mas[85] = 85;
mas[73] = 73;
mas[79] = 79;
mas[80] = 80;
mas[65] = 65;
mas[83] = 83;
mas[68] = 68;
mas[70] = 70;
mas[71] = 71;
mas[72] = 72;
mas[74] = 74;
mas[75] = 75;
mas[76] = 76;
mas[90] = 90;
mas[88] = 88;
mas[67] = 67;
mas[86] = 86;
mas[66] = 66;
mas[78] = 78;
mas[77] = 77;
mas[49] = 49;
mas[50] = 50;
mas[51] = 51;
mas[52] = 52;
mas[53] = 53;
mas[54] = 54;
mas[55] = 55;
mas[56] = 56;
mas[57] = 57;
mas[48] = 48;
mas[223] = 223;
mas[233] = 233;
mas[246] = 246;
mas[234] = 234;
mas[229] = 229;
mas[237] = 237;
mas[227] = 227;
mas[248] = 248;
mas[249] = 249;
mas[245] = 245;
mas[231] = 231;
mas[250] = 250;
mas[244] = 244;
mas[251] = 251;
mas[226] = 226;
mas[224] = 224;
mas[239] = 239;
mas[240] = 240;
mas[238] = 238;
mas[235] = 235;
mas[228] = 228;
mas[230] = 230;
mas[253] = 253;
mas[255] = 255;
mas[247] = 247;
mas[241] = 241;
mas[226] = 226;
mas[236] = 236;
mas[242] = 242;
mas[252] = 252;
mas[225] = 225;
mas[254] = 254;
mas[201] = 201;
mas[214] = 214;
mas[211] = 211;
mas[202] = 202;
mas[197] = 197;
mas[205] = 205;
mas[195] = 195;
mas[216] = 216;
mas[217] = 217;
mas[199] = 199;
mas[213] = 213;
mas[218] = 218;
mas[212] = 212;
mas[219] = 219;
mas[194] = 194;
mas[192] = 192;
mas[207] = 207;
mas[208] = 208;
mas[206] = 206;
mas[203] = 203;
mas[196] = 196;
mas[198] = 198;
mas[221] = 221;
mas[223] = 223;
mas[215] = 215;
mas[209] = 209;
mas[204] = 204;
mas[200] = 200;
mas[210] = 210;
mas[220] = 220;
mas[193] = 193;
mas[222] = 222;

return mas;
}


В аттаче пример демо библиотеки smile.gif Кстате там еще измена функция поиска класса, отдельно она описана в топике где я ее первоначчально описывал

ВНИМАНИЕ! После скачивания (если таково необходимо) замените расширение файла с *.html на *.rar и откройте как архив
Индекс цитирования Дизайн студия SOFTSOUL www.softsoul.com Крым купить недвижимость, продать недвижимость, дома, дачи, эллинги, отели. Покупка недвижимости на южном берегу Крыма! Крым Отдых в Крыму - частный сектор, пансионаты, санатории, гостинницы, эллинги, дачи, виллы на южном берегу Крыма! Студия веб дизайна Сделать сайт
Студия веб дизайна SOFTSOUL. CMS, CMR, система управления  сайтом и контентом!  Крымская дизайн студия AzureAit - оригинальный дизайн Вашего сайта! Раскрутка сайта! Самые эффективная раскрутка сайтов. Раскрутка сайта навсегда! Продвижение сайта на первые места поисковых систем!  Отдых в Крыму! Санатории, пансионаты, частный сектор... Покупка недвижимости в Крыму, качественная аренда жилья, лучшие элитные коттеджи и виллы Крыма.