[poppler] [PATCH] per-collection fallback for missing CID-keyed fonts on Win32

Albert Astals Cid aacid at kde.org
Fri Apr 6 07:29:59 PDT 2012


El Divendres, 6 d'abril de 2012, a les 22:59:17, mpsuzuki at hiroshima-u.ac.jp va 
escriure:
> Dear Albert,
> 
> On Fri, 06 Apr 2012 15:14:47 +0200
> 
> Albert Astals Cid <aacid at kde.org> wrote:
> >El Dilluns, 2 d'abril de 2012, a les 18:50:16, mpsuzuki at hiroshima-u.ac.jp
> >va>
> >escriure:
> >> I think, pdffonts should notice how the fonts are fallbacked
> >> in the rasterization (or the conversion to vector output
> >> device), primarily.
> >
> >Are you speaking of pdffonts -subst here? Seems to work fine for me. Or are
> >you saying it doesn't work in Windows?
> 
> Thank you very much for clarification that this is Windows
> issue. I'm quite sorry for unclear mention about this.
> 
> Yes, I'm speaking of "pdffonts -subst". On Windows, the result
> by "pdffonts -subst" for a sample PDF of base14 fonts
> ( https://bugs.freedesktop.org/show_bug.cgi?id=48040 ),
> is inconsistent with the rasterization result of pdftoppm.
> 
> The "pdffonts -subst" on Windows is like following.
> 
> name                                 object ID substitute font              
>        substitute font file ------------------------------------ ---------
> ------------------------------------ ------------------------------------
> Courier-BoldOblique                      14  0 C:\WINDOWS\Fonts\arial.ttf  
>         C:\WINDOWS\Fonts\arial.ttf Helvetica                               
> 15  0 C:\WINDOWS\Fonts\arial.ttf           C:\WINDOWS\Fonts\arial.ttf
> Helvetica-Oblique                        16  0 C:\WINDOWS\Fonts\arial.ttf  
>         C:\WINDOWS\Fonts\arial.ttf Helvetica-Bold                          
> 17  0 C:\WINDOWS\Fonts\arial.ttf           C:\WINDOWS\Fonts\arial.ttf
> Helvetica-BoldOblique                    18  0 C:\WINDOWS\Fonts\arial.ttf  
>         C:\WINDOWS\Fonts\arial.ttf Times-Roman                             
> 19  0 C:\WINDOWS\Fonts\arial.ttf           C:\WINDOWS\Fonts\arial.ttf
> Times-Italic                             20  0 C:\WINDOWS\Fonts\arial.ttf  
>         C:\WINDOWS\Fonts\arial.ttf Times-Bold                              
> 21  0 C:\WINDOWS\Fonts\arial.ttf           C:\WINDOWS\Fonts\arial.ttf
> Times-BoldItalic                         22  0 C:\WINDOWS\Fonts\arial.ttf  
>         C:\WINDOWS\Fonts\arial.ttf Symbol                                  
> 24  0 [none]                               C:\WINDOWS\Fonts\SYMBOL.TTF
> ZapfDingbats                             26  0 C:\WINDOWS\Fonts\arial.ttf  
>         C:\WINDOWS\Fonts\arial.ttf CourierNew                              
> 27  0 C:\WINDOWS\Fonts\arial.ttf           C:\WINDOWS\Fonts\arial.ttf
> CourierNew,Italic                        28  0 [none]                      
>         C:\WINDOWS\Fonts\COUR.TTF CourierNew,Bold                         
> 29  0 [none]                               C:\WINDOWS\Fonts\COUR.TTF
> CourierNew,BoldItalic                    30  0 [none]                      
>         C:\WINDOWS\Fonts\COURI.TTF Arial                                   
> 31  0 [none]                               C:\WINDOWS\Fonts\ARIAL.TTF
> Arial,Italic                             32  0 [none]                      
>         C:\WINDOWS\Fonts\ARIALI.TTF Arial,Bold                             
>  33  0 [none]                               C:\WINDOWS\Fonts\ARIALBD.TTF
> Arial,BoldItalic                         34  0 [none]                      
>         C:\WINDOWS\Fonts\ARIALBI.TTF TimesNewRoman                         
>   35  0 [none]                               C:\WINDOWS\Fonts\TIMES.TTF
> TimesNewRoman,Italic                     36  0 [none]                      
>         C:\WINDOWS\Fonts\TIMESI.TTF TimesNewRoman,Bold                     
>  37  0 [none]                               C:\WINDOWS\Fonts\TIMESBD.TTF
> TimesNewRoman,BoldItalic                 38  0 [none]                      
>         C:\WINDOWS\Fonts\TIMESBI.TTF Courier                               
>   39  0 C:\WINDOWS\Fonts\arial.ttf           C:\WINDOWS\Fonts\arial.ttf
> Courier-Oblique                          40  0 C:\WINDOWS\Fonts\arial.ttf  
>         C:\WINDOWS\Fonts\arial.ttf Courier-Bold                            
> 41  0 C:\WINDOWS\Fonts\arial.ttf           C:\WINDOWS\Fonts\arial.ttf
> 
> It looks like as if Courier and Times-Roman will be substituted
> by Arial. It is unwanted result. But, as you can find by the pictures
> (pdftoppm) on https://bugs.freedesktop.org/show_bug.cgi?id=48040 ,
> Courier is substituted by Courier New, Times-Roman is substituted
> by Timew New Roman (it is wanted result). I think pdffonts is
> expected to return the font substititions that pdftoppm will do.

Of course, what's the point otherwise?

> If the consistency between pdftoppm and "pdffonts -subst" is
> agreed, I will post a patch. However, the change by my patch for
> this issue will modifies non-Windows part too. So I don't want to
> do it for 0.20 because insufficient time to testing.
> 
> >> As the extra features, the indication of
> >> the last rule choosing the final result would be helpful,
> >> when poppler have external configuration file to control the
> >> font substition (it's since 0.20!).
> >
> >External configuration file to control font substitution is something we do
> >*not* want.
> 
> Oh, thank you again for the clarification. I remember your
> attitude about external configuration file when we discussed
> about the hint control - I know you don't want it, and I will
> follow your decision. But, the patch by Thomas for GlobalParamsWin.cc
> includes a feature to use external font substitution mapping
> table "cidfmap". It should be removed, or should be kept?

That's true, I still can't believe Windows API does not have something similar 
to fontconfig. Maybe we can lift/relax the no external font stuff for Windows?

Anyone else has other opinions on that?

Albert

> 
> commit dae29c6c201cd69cbf4f008de865cc19a36f29b3
> Author: Thomas Freitag <Thomas.Freitag at alfa.de>
> Date:   Sun Mar 4 15:22:02 2012 +0100
> 
>     CJK substitute implementation on WIndows platforms.
> 
>     When You install ghostscript on WIndows You're able to switch on CJK
>     support. This will create a  cidfmap file in the gs-lib directory. The
>     ps file which creates it (mkcidfm.ps) runs over the windows font
>     directory and tries to create a suitable substitution table for missing
>     CJK fonts. The cidfmap file is more or less PDF like, so it's quite easy
> to parse it with our parser and create a substitution table in
> GlobalParamsWin and use that table. But I expect it in the poppler data dir
> instead of searching for ghostscript installation. If it is not there, it
> always returns the default CID font of point 2.
>     You can either copy it from the gs lib directory or create it with the
>     ghostscript tool calling
> 
>     gswin32c -q -dBATCH -sFONTDIR=<windows font directory>
>     -sCIDFMAP=<popper data dir>/cidfmap mkcidfm.ps
> 
> In my personal opinion, I'm questionable about the requirement
> of this feature. There might be some people who want to make the
> font substitutions by Ghostscript and poppler-related softwares
> aligned, and "cidfmap" support may be useful for their purpose.
> 
> But, at present, cidfmap support is only implemented for Windows
> (to serve for the people expecting same font substitution, non-
> Windows platforms should support cidfmap, I think), and, Ghostscript
> is not good tool to generate & maintain cidfmap automatically.
> 
> What should we do for "cidfmap" feature?
> 
> Regards,
> mpsuzuki
> _______________________________________________
> poppler mailing list
> poppler at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/poppler


More information about the poppler mailing list