Замена отсутствующего шрифта.

  • Автор темы Автор темы _JVK_
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

_JVK_

Чатланин
Топикстартер
10 лет на форуме
Сообщения
184
Реакции
175
Доброго времени.
Проблема в следующем. Есть верстака в которой есть потеряный шрифт Avangard TM. Задача этот шрифт поменять на AvangardTM.

findTextPreferences.appliedFont='Avangard TM'
выдает ошибку:
The requested font family is not avaible
Подскажите пожалуйста что делать? Как искать? Какой аналог Type >> Find Font в скрипте?
InDesign CS3 (5.0.4). Mac OS X 10.4.11
 
Ответ: Замена отсутствующего шрифта.

Не знаю. Задал шрифт одной строке (купер), отключил шрифт, заменил на таймс. Всё работает.

Код:
Set myInDesign = CreateObject("InDesign.Application.CS4")
Set myDocument = myInDesign.ActiveDocument
myInDesign.FindTextPreferences.AppliedFont = ("AGCooperCyr")
myInDesign.ChangeTextPreferences.AppliedFont = ("Times New Roman")
myDocument.ChangeText
 
Ответ: Замена отсутствующего шрифта.

Fog_patch сказал(а):
Не знаю. Задал шрифт одной строке (купер), отключил шрифт, заменил на таймс. Всё работает.

Попробовал тоже самое – работает. То есть задал шрифт куску текста, потом отключил шрифт скпипт нашел заменил.
Но если открываю документ с потерянными шрифтами, которые никогда не были устоновленны, то скрипт ругается матом.

The requested font family is not avaible


Кто знает в чем проблема подскажите пожалуйста.
Код:
with (app){
myDoc = activeDocument
findTextPreferences.appliedFont = 'Avangard TM'
changeTextPreferences.appliedFont = 'AvangardTM'
myDoc.changeText()}
 
Ответ: Замена отсутствующего шрифта.

Попробовал только что создать документ на другом компе с шрифтами которых у меня сроду не было. Открыл у себя, заменилось без проблем...
Правда версия у меня CS4. Может в этом дело?
 
Ответ: Замена отсутствующего шрифта.

Да скорей всего именно в этом дело. Попробовал на другой машинке с CS3 фокус — кричит то же самое.
 
Ответ: Замена отсутствующего шрифта.

Сейчас поэксперементировал со шрифтами. Странно то, что находятся в выключеном состоянии только OpenType, при попытке искать Type1 или TrueType скрипт выдает ту же ошибку.
 
Ответ: Замена отсутствующего шрифта.

Еще посмотрел. Что CS3 что CS4 определяют отсутствующий фонт. Оба пишут его в appliedFont.Name, так что можно скрипт переиграть, почесать левое ухо правой ногой.
 
Ответ: Замена отсутствующего шрифта.

Fog_patch сказал(а):
Еще посмотрел. Что CS3 что CS4 определяют отсутствующий фонт. Оба пишут его в appliedFont.Name, так что можно скрипт переиграть, почесать левое ухо правой ногой.
Да, то что фонт определяется я видел. Вот только как теперь почесать левое ухо правой ногой?
 
Ответ: Замена отсутствующего шрифта.

Да в принципе много есть тормозных способов.
"Если Чарактеру(i) присвоен такой-то шрифт, то применяем к Чарактеру(i) другой шрифт." По-любому будет работать '))'
 
Ответ: Замена отсутствующего шрифта.

А это мысль. Спасибо попробую. Только долго перебирать все фреймы, праграфа и чарактеры. Ну хоть так. Еще раз спасибо.
 
Ответ: Замена отсутствующего шрифта.

… По-любому будет работать
А вот не работает.
Код:
if (myDoc.stories[0].characters[0].appliedFont.fontFamily=='Avangard TM'){
	myDoc.stories[0].characters[0].appliedFont='AvangardTM'}

Если у myDoc.stories[0].characters[0] шрифт потеряный, то скрипт вылетает с ошибкой Object is invalid

Код:
if (myDoc.stories[0].characters[0].appliedFont.fontFamily=='Times'){
	myDoc.stories[0].characters[0].appliedFont='AvangardTM'}
работает прекрасно, естественно если myDoc.stories[0].characters[0] шрифт Times
 
Ответ: Замена отсутствующего шрифта.

Нет, у меня всё работает. Проверил только что на CS3, на ttf-шрифте которого не было в системе.
 
Ответ: Замена отсутствующего шрифта.

Код можно посмотреть?
 
Ответ: Замена отсутствующего шрифта.

Да собственно это ваш код, только на бейсике

Код:
If myDocument.Stories(1).Texts(1).Characters(1).AppliedFont.FontFamily = ("Adine Kirnberg") Then
   myDocument.Stories(1).Texts(1).Characters(1).AppliedFont = myInDesign.Fonts.Item("Arial")
End If
 
Ответ: Замена отсутствующего шрифта.

Код-то мой да несовсем.
Я на бейсике не пишу, но разве так не правильнее?
If myDocument.Stories(1).Texts(1).Characters(1).AppliedFont.FontFamily == ("Adine Kirnberg")

если написать так ,
if (myDoc.stories[0].characters[0].appliedFont.fontFamily='Avangard TM')
то работает, но только ему все равно какой шрифт у characters[0]

Если не сложно попробуйте поставить текст не Adine Kirnberg и запустить скрипт. Думаю замена пройдет все равно.
 
Ответ: Замена отсутствующего шрифта.

Попробовал на жабе написать и получил такие результаты: в CS4 всё пашет без проблем (на васике, на жабе, даже на жабе с ошибками (с моими)), в CS3 пашет только на васике, на жабе к сожалению выдает ошибку такую же как у вас. Короче тут нужно ждать продвинутых indd-скриптеров. Я для indd в общем-то не пишу, только чужое изредка под себя адаптирую.

"==" — это Си-шный синтаксис, на васике всё "=" ))
 
Ответ: Замена отсутствующего шрифта.

К сожалению бейсик не пашет на Mac'e. Завтра попробую apple script, мож заработает

Как бы скриптом попасть в Type >> FindFont? Думаю проблема решается где-то там.
 
Ответ: Замена отсутствующего шрифта.

А если сначала попытаться узнать какой шрифт применен?
типа
alert(myDocument.Stories(1).Texts(1).Characters(1).Appli edFont.FontFamily)

смешал JS и VB. Думаю разберетесь?
 
Ответ: Замена отсутствующего шрифта.

Strizh сказал(а):
А если сначала попытаться узнать какой шрифт применен?
Пытался…
Код:
alert(myDoc.stories[0].characters[0].appliedFont.fontFamily)
JavaScript Error!
Error Number: 45
Error String: Object is invalid
Source: alert(myDoc.stories[0].characters[0].appliedFont.fontFamily)

Если шрифт наместе, то все нормально.

Код:
alert (myDoc.fonts[0].fontFamily)
Определяет потерянный Avangard TM.
 
Статус
Закрыто для дальнейших ответов.