Hi, Just I've filed my proposal to bugzilla, with my preliminary patch: https://bugs.freedesktop.org/show_bug.cgi?id=30225 Also I found a similar discussion in August: https://bugs.freedesktop.org/show_bug.cgi?id=29497 Unfortunately, it seems that the original submitter does not raise the discussion in this list. Regards, mpsuzuki Behdad Esfahbod wrote: > Can you file a bug with reference to these details please? > > behdad > > On 09/03/10 03:50, mpsuzuki@xxxxxxxxxxxxxxxxx wrote: > >> On Thu, 02 Sep 2010 16:44:35 -0400 >> Behdad Esfahbod <behdad@xxxxxxxxxx> wrote: >> >>> Can you explain more why the PANOSE values are needed? And, do we need to >>> allow users to query based on them, or just having them in the cache? >>> >> In some popular document formats, like PDF, SVG, ODF and OOXML, >> Panose values are embedded to give the hint for font substitution. >> ================================================================== >> PDF >> --- >> PDF Reference 6th edition (for PDF version 1.7) >> 5.7.2 Font Descriptors for CIDFonts >> >> see the description for "Style" entry which >> includes 2 bytes from OS/2.sFamilyClass, >> 10 bytes from OS/2.Panose. >> >> SVG >> --- >> http://www.w3.org/TR/2003/REC-SVG11-20030114/fonts.html >> 20.8.3 The `font-face' element >> >> there are many elements inherited from CSS2, >> including Panose. >> >> ODF >> --- >> http://docs.oasis-open.org/office/v1.1/OS/OpenDocument-v1.1.pdf >> 14.6.1 CSS2/SVG Font Descriptors >> >> ODF adopted the elements for the fonts from >> CSS2 and SVG, so even the font is for the text >> (not for embedded scalable graphics), it may >> have Panose value in the svg:panose-1 attribute. >> >> OOXML >> ----- >> ISO/IEC 29500-1:2008 >> 17.8.3.13 panose1 (Panose-1 Typeface Classification Number) >> >> OOXML have several font properties (GDI parameters, >> Panose, and supported unicode range). In 17.8.2 Font >> Substitution, there is a list of properties to be >> used in the font substitution, and panose is described >> as the highest priority. >> >> PCL >> --- >> "PCL 5e Technical Quick Reference Guide" >> http://h20000.www2.hp.com/bc/docs/support/SupportManual/bpl13205/bpl13205.pdf >> "PCL5 Comparison Guide" >> http://h20000.www2.hp.com/bc/docs/support/SupportManual/bpl13206/bpl13206.pdf >> >> PCL5 selects the font by giving Panose parameters >> sequentially and narrowing down the candidates, >> see PCL 5e Technical Quick Reference Guide p 11-15. >> >> See table 1-1 "PCL5 Feature Support Matrix" in >> page 1-12 PCL5 Comparison Guide, many PCL5 >> implementations support the feature to narrow >> down by Panose parameters. >> >> Also PCL6 (PCL XL) supports the feature by >> giving a string of PCL5 commands to PCLSelectFont >> attribute. >> ================================================================== >> In addition, current fontconfig does not have easy element to >> be related with CSS's 5 family classification (serif, sans- >> serif, cursive, fantasy). I think getting FamilyClass & Panose >> values from fontconfig cache may be helpful, because the >> application don't have to open a face, load OS/2 table, >> check FamilyClass/Panose values, close a face. >> >> The font selection by the matching of familynames & charsets >> leaves a room for an improvement, because severeal documents >> formats (and CSS) have these properties in the documents. >> >> -- >> >> The query based on these properties is arguable. The algorithm >> to evaluate "best matching" font by Panose is not specified >> in Panose specification paper. If exactly same, it is ok - but if >> different, it is arguable how the similarity should be evaluated. >> Some people want to give the highest priority to serif/sans-serif >> contrast, others want to give it to weight similarity. At present, >> I don't have good idea that everybody think it as acceptable. >> >> Thus, I think just giving the APIs to provide these properties >> (FamilyClass, Panose, etc) is appropriate starting point. It >> is still convenient for fontconfig client applications because >> they can reduce the costs to open/check/close many font files >> by themselves. >> >> # In fact, in PCL5, the priority of each bytes in Panose is user >> # controllable. >> >> Behdad, could I answer to your question? If I'm misunderstanding >> what I was requested, please give me one more chance. >> >> Regards, >> mpsuzuki >> >> P.S. >> If putting so many data to fontconfig is bad idea, please let me >> know. >> >> >>> On 09/02/10 14:24, mpsuzuki@xxxxxxxxxxxxxxxxx wrote: >>> >>>> Hi, >>>> >>>> How can I store FC_MATRIX object to cache file? >>>> >>>> -- >>>> >>>> Now I'm trying to add some properties to fontconfig database, >>>> which are taken from OS/2 and PCLT tables in OpenType: like >>>> sFamilyClass (so-called IBM family classification), Panose etc. >>>> They are useful to guess whether typeface is typographic/scriptic, >>>> serif/sans-serif, proportional/fixed-pitch etc. My original >>>> motivation is an improvement of the font substitution in poppler. >>>> For detail, please find: >>>> >>>> https://bugs.freedesktop.org/show_bug.cgi?id=5168 >>>> >>>> Panose in OpenType is a collection of 10 parameters, and >>>> all parameters are expressed by 8bit. 80bit is too large >>>> to pack into double integer, so I have to consider what is >>>> the best way to store such in FcPattern. I think there are >>>> 3 options: >>>> >>>> 1) Name all parameters and store separately, aslike, >>>> adding 10 types to FcObjectTypes: FC_OS2_PANOSE_0, >>>> FC_OS2_PANOSE_1, ... >>>> >>>> # The name of each byte is different from OpenType spec >>>> # and its reference, so I don't use OpenType spec name >>>> # like FC_OS2_PANOSE_FAMILYTYPE. >>>> >>>> 2) ASCII-fy 10 parameters to NULL-terminated string, >>>> and use as a string type property. >>>> >>>> 3) Define new data type, a structure including 10 members >>>> and add "FcTypePanose" to FcType. >>>> >>>> -- >>>> >>>> About 1), it's easy for me to write such patch and for >>>> users to use, but the addition of 10 objects may be too >>>> much, because current variety of the object type is 41. >>>> >>>> About 2), it's easy for me to write such patch but tricky >>>> for users to use, because it is requred to decode from >>>> ASCII string to original data. >>>> >>>> About 3), it's easiest for users. So I have to consider >>>> about this option. >>>> >>>> Checking the source code of fontconfig, FcMatrix data >>>> type looks similar (a structure with fixed length), but >>>> it seems that the data typed FcMatrix cannot be stored >>>> in cache file. I inserted FcMatrix object to FcPattern >>>> and tried to save it in cache file, but it seems that >>>> FcMatrix typed data cannot be saved (fc-cat can read >>>> object type but cannot read value). >>>> >>>> The code for FcString, FcCharSet and FcLangSet are >>>> variable length data and have many works. So I want to >>>> know how I can store FcMatrix typed data to cache file. >>>> >>>> Regards, >>>> mpsuzuki >>>> >>>> P.S. >>>> If option 1) or 2) are acceptable for fontconfig maintainers, >>>> I will do so. >>>> >>>> _______________________________________________ Fontconfig mailing list Fontconfig@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/fontconfig