I think this is an issue of fallback fonts in the font-family property. The
entities are resolving, but the font being used does not contain a glyph for
the missing character.
When I run your test file with XEP 4.16, I don't see the problem you are
seeing; all the symbols display properly. When I view your PDF file with
Acrobat Pro and use the Text Touchup Tool to examine the fonts used for
those missing characters, I find the following:
- In footnotes, the cap symbol is rendered with Symbol font.
- In text, the cap symbol is rendered with Cardo font.
And it seems that the Cardo font does not contain the cap character.
Normally if you specify a custom font for the body.font.family, the Symbol
font is automatically added to the font list in the font-family property of
the XSL-FO output. See:
http://www.sagehill.net/docbookxsl/SpecialChars.html#fontFamilyList
The internal parameter 'body.fontset' param handles that. Have you
customized 'body.fontset' to eliminate Symbol from it? And perhaps
customized the footnote.properties attribute-set to add it?
Bob Stayton
Sagehill Enterprises
----- Original Message -----
From: "Ron Catterall" <>
To: <>
Sent: Saturday, November 28, 2009 10:15 AM
Subject: [docbook-apps] Problem with resolution of entities
> Docbook 5, xsl 1.75.2, Oxygen 11.0 MacOS 10.4.11 Saxon 6.5.5 XEP 4.16 -
> FO to PDF
> I find that set theory symbols (∩ etc) resolve correctly in
> footnotes to text in a <para> and in footnotes to text in a
> <table><info><title>, but do not resolve in text (<para>) or text in
> <table><tgroup>(<thead>|<tbody>)<row><entry>. I have tried both entity
> names (∩ etc) and code points (∩ etc) - both react the same
> way.
> Looks like a bug, but any suggestions/help welcome.
> The files are below, and the PDF output attached as test.pdf
>
> *****file test.xml*****
> <?xml version="1.0" encoding="UTF-8" ?>
> <!DOCTYPE appendix
> [
> <!ENTITY % qwerty SYSTEM
> "/Library/WebServer/Documents/_XML/_JC_a_DB5/qwerty.ent">
> %qwerty;
> ]>
>
> <appendix xmlns="http://docbook.org/ns/docbook" version="5.0"
> xml:id="Venn" xml:lang="EN">
> <info><title>A Simple Set Theory Approach</title></info>
> <para>try cap: A∩A --- try 2229: A∩A</para>
> <para>try sup: B⊃B --- try 2283: B⊃B</para>
> <para>try sub: C⊂C --- try 2282: C⊂C</para>
> <para>try empty: D∅D --- try 2205: D∅D</para>
> <para>try ne: E≠E --- try 2260: E≠E</para>
> <para>try 2260: F…F --- try 2026: F…F</para>
> <para>try nbsp: G G --- try 0020: G Z</para>
> <para>para<footnote><para>try cap: A∩A --- try 2229:
> A∩A</para></footnote></para>
> <para>para<footnote><para>try sup: B⊃B --- try 2283:
> B⊃B</para></footnote></para>
> <para>para<footnote><para>try sub: C⊂C --- try 2282:
> C⊂C</para></footnote></para>
> <para>para<footnote><para>try empty: D∅D --- try 2205:
> D∅D</para></footnote></para>
> <para>para<footnote><para>try ne: E≠E --- try 2260:
> E≠E</para></footnote></para>
> <para>para<footnote><para>try hellip: F…F --- try 2026:
> F…F</para></footnote></para>
> <para>para<footnote><para>try nbsp: G G --- try 0020:
> G Z</para></footnote></para>
> <table frame="all" xml:id="Pop_anal" colsep="1"
> rowsep="1"><info><title>The Effect of Constraints upon the Size of the
> Population Set<footnote><para> … then we have no knowledge of the
> possible overlap of the two sets, (we have no knowledge of whether
> B∩A=∅, B⊂A, B=A or B⊃A.) However, if B=A
> or B⊃A; then we would have to infer ≠ …
> </para></footnote></title></info>
> <tgroup align="left" cols="4" colsep="1" rowsep="1">
> <colspec colname="cl" colwidth="1*"/>
> <colspec colname="c2" colwidth="0.7*"/>
> <colspec colname="c3" colwidth="0.8*"/>
> <colspec colname="c4" colwidth="1.2*"/>
> <spanspec align="center" nameend="c4" namest="c1"
> spanname="hspan"/>
> <thead>
> <row>
> <entry>Independent Requirement ∩</entry>
> <entry>Fraction of Population⊃</entry>
> <entry>Population of set⊂</entry>
> <entry>Intersection Set∅</entry>
> </row>
> </thead>
> <tbody>
> <row>
> <entry>(…X… Z   Z
> ≠X≠ G)</entry>
> <entry>1 in 10</entry>
> <entry>0.0024</entry>
>
> <entry>(A∩B∩C∩D∩E∩F∩G)</entry>
> </row>
> <row>
> <entry>(… ≠ ∅ ⊂ ⊃ H)</entry>
> <entry>1 in 10</entry>
> <entry>0.0002</entry>
>
> <entry>(A∩B∩C∩D∩E∩F∩G∩H)</entry>
> </row>
> </tbody>
> </tgroup>
> </table>
> </appendix>
>
> *****file qwerty.ent*****
> <!ELEMENT ents (a?)>
> <!ENTITY sub "⊂"> <!-- is a proper sub-set of
> (i.e. is not equal to) -->
> <!ENTITY sup "⊃"> <!-- is a superset of -->
> <!ENTITY cap "∩"> <!-- intersection of sets -->
> <!ENTITY empty "∅"> <!-- empty or null set -->
> <!ENTITY ne "≠"> <!-- not equal to -->
> <!ENTITY hellip "…"> <!-- horizontal ellipsis -->
> <!ENTITY nbsp " "> <!-- ascii space -->
> --
> Ron Catterall Ph.D. D.Sc.
>
> http://catterall.net
>
>