Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
6

Getting different fontStyles in the document for the same font

Explorer ,
Sep 21, 2023 Sep 21, 2023

Hi Everyone,

 

I am trying to get fontStyle for the characters through scripting by the below code,

 

app.findGrepPreferences = changeGrepPreferences = NothingEnum.nothing;
app.findChangeGrepOptions.includeFootnotes = true;
app.findChangeGrepOptions.includeLockedLayersForFind = true;
app.findChangeGrepOptions.includeMasterPages = false;
app.findGrepPreferences.findWhat = ".";
var findss = app.activeDocument.findGrep();
for(j=0;j<findss.length;j++){
$.writeln(findss[j].characters[0].fontStyle)
}

 

but i am getting both 'book' fontStyle and 'Regular' for the different contents. I am using 'adobe caslon pro-regular' font.

 

Screenshot 2023-09-22 at 7.58.52 am.png

I don't know what is wrong with the code or the font, file. Attached files for your reference.

Please help me to sort this issue.

 

Thanks,

SathishS

TOPICS
Scripting
1.1K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Sep 25, 2023 Sep 25, 2023

How bizarre. When you select the paragraph 'continental railroad . . . land' it shows as Regular.

 

The Find/Replace Font window doesn't see Caslon Book (it should be listed there in brackets to show it's there but doesn't exist -- existentially challenging but there you are.

 

And it should show up in the Find/Change dialog (again, in brackets), but it doesn't. But it's there in the document:

 

 

ranges = ...

for (i = 0; i < ranges.length; i++) {
  $.writeln (ranges[i].appliedFont.name);
}

 

 

...
Translate
Community Expert ,
Sep 21, 2023 Sep 21, 2023

FindWhat = '.' will return whole texts and GREP is rather overkill?

 

If you want to find texts with specific formatting - you can use Text find but you still need to define what formatting you want to find.

 

I'm not JS guy so can't give you exact code. 

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Sep 21, 2023 Sep 21, 2023

FindWhat = '.' will return any single character.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 22, 2023 Sep 22, 2023

Not exactly, without anything else - it will return all texts - not single characters - so it would be quicker to just iterate all Stories.

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 22, 2023 Sep 22, 2023

It's true that "." finds any single character -- but it's also true that it finds all characters, so your script writes every single character (apart from the paragraph break).

 

Better to use styleRanges, then write those font style of those ranges.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Sep 24, 2023 Sep 24, 2023

Hi @Peter Kahrel,

Thanks for responding... I am new to the scripting. Could you help me where to implement 'styleRanges' in above code.

 

-Sathish

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 25, 2023 Sep 25, 2023

You'd do something like this:

ranges = app.activeDocument
  .stories.everyItem()
  .textStyleRanges.everyItem().getElements();

for (i = 0; i < ranges.length; i++) {
  if (ranges[i].appliedFont.name === 'Adobe Caslon Pro\tRegular') {
    // Do something;
  }
}
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 25, 2023 Sep 25, 2023

Great piece of code - as always. 

 

But OP needs to remember about one thing - if consecutive pieces of text have the same font, but differ in something else - point size, color, etc. - each piece will be returned as a separate result - which may be a problem, when whole block of text should be processed. 

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 25, 2023 Sep 25, 2023

True. But you'd have the same problem when looking for .+ and the font name+style.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 25, 2023 Sep 25, 2023

No, you wouldn't:

 

RobertTkaczyk_1-1695637779717.png

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Sep 25, 2023 Sep 25, 2023

Hi @Peter Kahrel,

 

Thanks for the Code!!! 

 

As attached indesign file, everything is typeset in 'Adobe Caslon Pro', but when i am trying to evaluate the fontStyle of the characters, it returns 'Regular' fontStyle for second textframe and 'book' for first frame. Even there is no 'Book' fontstyle available in this font 'Adobe Caslon Pro'.

 

Screenshot 2023-09-25 at 3.55.56 pm.png

 

 

 

 

 

 

 

 

 

-Sathish

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 25, 2023 Sep 25, 2023

But the TextStyleRange can be as small as InsertionPoint - you need to check "type" as well.

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 25, 2023 Sep 25, 2023

How bizarre. When you select the paragraph 'continental railroad . . . land' it shows as Regular.

 

The Find/Replace Font window doesn't see Caslon Book (it should be listed there in brackets to show it's there but doesn't exist -- existentially challenging but there you are.

 

And it should show up in the Find/Change dialog (again, in brackets), but it doesn't. But it's there in the document:

 

 

ranges = ...

for (i = 0; i < ranges.length; i++) {
  $.writeln (ranges[i].appliedFont.name);
}

 

 

And you can select it (or one of the instances) as follows, if only to show that your eyes don't deceive you:

 

ranges = ...

for (i = 0; i < ranges.length; i++) {
  if (ranges[i].appliedFont.name === 'Adobe Caslon Pro\tBook') {
    ranges[i].select();
    exit();
  }
}

 

And you can change it as follows:

 

ranges = ...
for (i = 0; i < ranges.length; i++) {
  if (ranges[i].appliedFont.name === 'Adobe Caslon Pro\tBook') {
    ranges[i].appliedFont = 'Adobe Caslon Pro\tRegular'
  }
}

 

Maybe some mild corruption. I'd be careful with that document. Perhars it's a good idea to do an IDML roundtrip.

 

(Edit: Some duplication here, hadn't seen your and Robert's replies when I answered.)

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Sep 25, 2023 Sep 25, 2023

Thanks @Peter Kahrel,

 

But XMP cleanup and idml didn't helped. Still getting the same issue.

-Sathish

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Sep 25, 2023 Sep 25, 2023

But after change everything that finds 'Book' to 'Regular', now it all returns as 'Regular' font style. But don't have any clue why it behaves like that.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 25, 2023 Sep 25, 2023
LATEST

But don't have any clue why it behaves like that.

 

It's very strange indeed.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 25, 2023 Sep 25, 2023

That's what I get:

RobertTkaczyk_0-1695639957346.png

 

And Find&Change from UI - even with ".*":

RobertTkaczyk_0-1695640066963.png

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 25, 2023 Sep 25, 2023

But as you can see on my 1st screenshot - not highlighted - ",?!." in the 2nd TextFrame have different formatting - Kerning set to "Optical"

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 25, 2023 Sep 25, 2023

And here is when combined with GREP Find results - ".*":

RobertTkaczyk_0-1695641685183.png

First Found - is EXACTLY the same as TextStyleRange and Paragraph - but 2nd Found - highlighted - is a whole 2nd TextFrame - ignores Kerning option.

 

And from here - there is only one small step to very advanced Text Preflight...

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines