[AI CS4-CS6] Как сделать разноцветный текст в области

  • Автор темы Автор темы keramer82
  • Дата начала Дата начала
А как в таких случаях ищут шрифт? В системе-то он есть
Untitled-1.jpg
 
А как в таких случаях ищут шрифт? В системе-то он есть
Ну а с чего вы взяли, что в иллюстраторовской модели он называется так же как и в этой менюшке?
Я не устану повторять - вместо того, чтобы задавать подобные вопросы тут - читайте референс. Там тоже есть примеры получения списка имен шрифтов.
 
1646294370984.png
 
Этот код мне ничего не дает кроме пустого созданного документа в иллюстраторе. Опять я чего-то немного упускаю
JavaScript:
var edgeSpacing = 10;
var columnSpacing = 230;
var docPreset = new DocumentPreset;
docPreset.widht = 1191.0;
docPreset.heght = 842.0

var docRef = documents.addDocument(DocumentColorSpace.CMYK, docPreset);
var sFontNames = "";
var x = edgeSpacing;
var y = (docRef.height - edgeSpacing);

var iCount = textFonts.length;
for(var i=0; i<iCount; i++) {
    sFontName = textFonts[i].name;
    sFontName += " ";
    sFontNames = sFontName = textFonts[i].style;
    
    var textRef = docRef.textFrames.add();
    textRef.textRange.characterAttributes.size = 10;
    textRef.contents = sFontNames;
    textRef.top = y;
    textRef.left = x;
    
    if ((x + textRef.widht) > docRef.widht) {
        textRef.remove();
        iCount = i;
        break;
    }
    else{
        textRef.textRange.characterAttributes.textFont =
        textFonts.getByName(textFonts[i].name);
        redraw();
        
        if( (y-=(textRef.height)) <= 20 ) {
            y = (docRef.height - edgeSpacing);
            x += columnSpasing;
        }
    }
}
 
Да бог с ним с документом 'fp'
Просто перебор с печатью сделайте
JavaScript:
var iCount = textFonts.length;
for(var i=0; i<iCount; i++) 
    alert(textFonts[i].name);
 
  • Спасибо
Реакции: keramer82
Это не страшно, можно и Enter зажимать, страшнее другое - этого шрифта нет. Или это вообще не Arial. Наверняка же есть способ узнать шрифт выбранного текста?
 
JavaScript:
var sel = app.activeDocument.selection;
for (i = 0 ; i<sel.length ; i++)
     {
          $.writeln(sel[i].textRange.characterAttributes.textFont.name)
     }
Спасибо большое! А может можно узнать какой-нибудь ID шрифта, у них названия одинаковые видимо с Arial MT, а в менюшке иллюстратора Arial CA, который поддерживает кириллицу, и именно он нужен.
 
Я имею ввиду, чтобы назначить шрифт можно было так:
JavaScript:
var fontStyle = textRef.textRange.characterAttributes;
fontStyle.textFont = app.textFonts[842];
 
А что у двух разных шрифтов одинаковые имена у вас? Разве такое может быть?
 
  • Спасибо
Реакции: keramer82
Дело в том, что в системе установлены шрифты Arial MT и Arial CA, а скрипт видит 2 шрифта Arial MT и Arial MT. Для него это один и тот же, и он берет ближайший, и конечно же не тот, который нужен.
 
Дело в том, что в системе установлены шрифты Arial MT и Arial CA, а скрипт видит 2 шрифта Arial MT и Arial MT. Для него это один и тот же, и он берет ближайший, и конечно же не тот, который нужен.
Я к тому что попробуйте сделать два разных фрейма этими разными шрифтами и скриптом посмотрите имена - они точно будут одинаковые?????
 
Для чистоты эксперимента и другие свойства проверьте
JavaScript:
var sel = app.activeDocument.selection;
for (i = 0 ; i<sel.length ; i++)
     {
         var tf=sel[i].textRange.characterAttributes.textFont;
          alert("Name: "+tf.name+" Style: "+tf.style+" "+" Family: "+tf.family);
     }
 
Вот свойства family у них отличаются, у одного Arial (этот нужен, но не ставится), а у другого Arial MT (этот ставится, но не нужен). А все остальное совпадает.
 
Вот свойства family у них отличаются, у одного Arial (этот нужен, но не ставится), а у другого Arial MT (этот ставится, но не нужен). А все остальное совпадает.
Тогда вы в беде, getByName работать не будет
Придется организовывать цикл по всем шрифтам, проверяя name и family пока нужный не найдете
По моему проще второй из системы удалить ;)
 

Не по теме:
имхо, использовать шрифт, с которым нет таких заморок (если, конечно, это не скрипт на века)