<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Angsana New";
        panose-1:2 2 6 3 5 4 5 2 3 4;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DilleniaUPC;
        panose-1:2 2 6 3 5 4 5 2 3 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#1E66AE;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#1E66AE;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
tt
        {mso-style-priority:99;
        font-family:"Courier New";}
span.cat
        {mso-style-name:cat;}
span.ct
        {mso-style-name:ct;}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:Consolas;}
p.attach, li.attach, div.attach
        {mso-style-name:attach;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:9.0pt;
        font-family:"Arial","sans-serif";}
p.bold, li.bold, div.bold
        {mso-style-name:bold;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:10.0pt;
        font-family:"Arial","sans-serif";
        font-weight:bold;}
p.green, li.green, div.green
        {mso-style-name:green;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        color:#628C2A;}
p.replbq, li.replbq, div.replbq
        {mso-style-name:replbq;
        margin:3.0pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.ad, li.ad, div.ad
        {mso-style-name:ad;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.underline, li.underline, div.underline
        {mso-style-name:underline;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.yshortcuts
        {mso-style-name:yshortcuts;}
p.ad1, li.ad1, div.ad1
        {mso-style-name:ad1;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.ad2, li.ad2, div.ad2
        {mso-style-name:ad2;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        margin-bottom:7.5pt;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.underline1, li.underline1, div.underline1
        {mso-style-name:underline1;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";
        text-decoration:underline;}
span.yshortcuts1
        {mso-style-name:yshortcuts1;
        font-family:"Verdana","sans-serif";
        font-weight:bold;}
span.yshortcuts2
        {mso-style-name:yshortcuts2;
        font-family:"Verdana","sans-serif";
        font-weight:normal;}
span.EmailStyle36
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1905528691;
        mso-list-template-ids:-809993062;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="EN-US" link="#1E66AE" vlink="#1E66AE">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">There’s one other possible angle on using 3/0 name records: I don’t know if, back in 1990, the thinking was that you might want to have different strings (for
 a given name ID) on different platforms, and hence that the platform/encoding sub-keys mattered as much to filter strings according to the target platform as to identify the encoding scheme.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">If I were redesigning the ‘name’ table today, I’d design around assumptions that strings are platform agnostic and are always in a specific Unicode encoding
 scheme (either UTF-8 or UTF-16).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Peter<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></a></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> mpeg-OTspec@yahoogroups.com [mailto:mpeg-OTspec@yahoogroups.com]
<b>On Behalf Of </b>Peter Constable<br>
<b>Sent:</b> August 22, 2012 10:24 AM<br>
<b>To:</b> Behdad Esfahbod<br>
<b>Cc:</b> Levantovsky, Vladimir; bobh528; mpeg-OTspec@yahoogroups.com<br>
<b>Subject:</b> RE: [mpeg-OTspec] Re: New work on 3rd edition of the OFF (AHG kick-off) - name table<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">  <o:p></o:p></p>
<div id="ygrp-mlmsg">
<div id="ygrp-msg">
<div id="ygrp-text">
<p style="margin-bottom:12.0pt">What's the metric for determining "wrong"? <br>
<br>
I agree that this looks like it may have been copied from the 'cmap' table. If nothing else, the text could have been better contextualized (e.g., "...strings should be encoded using [encoding scheme] and corresponding NameRecord entries should use [platform
 x, encoding y]..."). <br>
<br>
And I also agree that it looks pretty nonsensical. E.g., the strings for Wingdings cannot possibly be expressed using the (non-standard) characters supported in Wingdings, and so also encoding the strings in that (font-specific) symbol encoding makes no sense.
<br>
<br>
Even so, for better or worse, it appears that symbol fonts on Windows have since long used 3/0 NameRecord entries that point to string data that is Unicode encoded -- specifically, I experimented to confirm that the string data will be interpreted using UTF-16
 on Windows 8 (and I'm certain it would be the same on earlier versions). <br>
<br>
It would probably be better to document with the details as I've expressed here: NameRecord entries with 3/0 pointing to string data encoded with UTF-16.
<br>
<br>
An interesting experiment that I haven't tried would be to create a font that uses 3/0 in the 'cmap' table, but 3/1 in the 'name' table. My guess is that it would work as desired, though that would need to be confirmed. At the same time, it would not at all
 surprise me if commonly-use type design tools such as FontLab do not make it easy to construct fonts that way. (I don't presently have FL installed on a machine to confirm.)
<br>
<br>
<br>
Peter <br>
<br>
-----Original Message----- <br>
From: Behdad Esfahbod [mailto:<a href="mailto:behdad.esfahbod%40gmail.com">behdad.esfahbod@gmail.com</a>] On Behalf Of Behdad Esfahbod
<br>
Sent: August 21, 2012 1:21 PM <br>
To: Peter Constable <br>
Cc: Levantovsky, Vladimir; bobh528; <a href="mailto:mpeg-OTspec%40yahoogroups.com">
mpeg-OTspec@yahoogroups.com</a> <br>
Subject: Re: [mpeg-OTspec] Re: New work on 3rd edition of the OFF (AHG kick-off) - name table
<br>
<br>
I have wanted to raise an issue with 'name' table and Windows encodings for a while. To me, it looks like there's some confusion in the spec right now.
<br>
The 'name' table page on MS otspec [1] says: <br>
<br>
"When building a Unicode font for Windows, the platform ID should be 3 and the encoding ID should be 1. When building a symbol font for Windows, the platform ID should be 3 and the encoding ID should be 0."
<br>
<br>
This is plain wrong. I assume it was copy/pasted from the 'cmap' table. The platform/encoding ID for name table should match the encoding of the name strings, not what kind of glyphs the font has. Indeed, in fontconfig I had to allow encoding ID 0 in 'name'
 table, to mean UTF-16BE... <br>
<br>
Any clarification in the space will be appreciated. <br>
<br>
In the same vein, the same page, platform ID 3 encoding ID 10 is called Unicode UCS-4 (which makes sense for the 'cmap' table), but in the 'name'
<br>
table it probably should say UTF-16BE instead. <br>
<br>
behdad <br>
<br>
<br>
[1] <a href="http://www.microsoft.com/typography/otspec/name.htm">http://www.microsoft.com/typography/otspec/name.htm</a>
<br>
<br>
<br>
On 08/21/2012 04:00 PM, Peter Constable wrote: <br>
> <br>
> <br>
> One issue Bob’s comments raise has to do with the way that platform <br>
> and encoding IDs are used both for name records and cmap subtables. In <br>
> a cmap subtable, the difference between UCS-2 and UTF-16 is really <br>
> important since specific formats would be needed to support UTF-16. In <br>
> contrast, there’s nothing that would necessarily need to be different <br>
> for name table data structures. In fact, I doubt that there’s anywhere <br>
> in the Windows platform where a name table string might get processed <br>
> that would assume UCS-2 and _/not/_ UTF-16. <br>
> <br>
> Hence, there might not be any problem if the spec were to state that <br>
> 3/1 _/or/_ 3/10 name strings are assumed to be encoded as UTF-16; or <br>
> even further, to stipulate that 3/10 should not be used in name <br>
> records and that 3/1 name strings are assumed to be UTF-16. <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> Peter <br>
> <br>
> <br>
> <br>
> *From:<a href="mailto:%2Ampeg-OTspec%40yahoogroups.com">*mpeg-OTspec@yahoogroups.com</a>
<br>
> [mailto:<a href="mailto:mpeg-OTspec%40yahoogroups.com">mpeg-OTspec@yahoogroups.com</a>] *On Behalf Of *Levantovsky,
<br>
> Vladimir <br>
> *Sent:* August 8, 2012 8:28 AM <br>
> *To:* bobh528; <a href="mailto:mpeg-OTspec%40yahoogroups.com">mpeg-OTspec@yahoogroups.com</a>
<br>
> *Subject:* RE: [mpeg-OTspec] Re: New work on 3rd edition of the OFF <br>
> (AHG <br>
> kick-off) - name table <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> Hi Bob, <br>
> <br>
> <br>
> <br>
> Thank you very much for taking the time to review the draft and for your comments.
<br>
> <br>
> Aside from the changes in OS/2 Panose field and new ‘rclt’ feature <br>
> description, all other changes you currently see in the draft are <br>
> rolled in from already issued and approved prior amendments and <br>
> corrigendum. The text of the ‘name’ table description hasn’t been <br>
> modified at all recently, the last changes we made were discussed back <br>
> in 2009/2010 when the second amendment was finalized. I verified that <br>
> the current text is the exact match of OT 1.6 <br>
> (<a href="http://www.microsoft.com/typography/otspec/name.htm">http://www.microsoft.com/typography/otspec/name.htm</a>) – with the
<br>
> exception of the example page <br>
> (<a href="http://www.microsoft.com/typography/otspec/namesmp.htm">http://www.microsoft.com/typography/otspec/namesmp.htm</a>) that is nested in the HTML version of OT1.6 and ‘inlined’ in the ISO text.
<br>
> <br>
> <br>
> <br>
> I agree with you that there are quite a few places where the current ‘name’ <br>
> table text could be improved – in fact, the total re-write of this <br>
> section was already proposed by Josh Hadley earlier this year: <br>
> <a href="http://tech.groups.yahoo.com/group/mpeg-OTspec/message/714">http://tech.groups.yahoo.com/group/mpeg-OTspec/message/714</a>
<br>
> <br>
> Now may be a good time to discuss it in details and see if we can <br>
> improve this section of the spec while the editing period is still open (until 8/31/12).
<br>
> However, it’s not “now or never” kind of deal so I don’t want anyone <br>
> to feel rushed to make changes – the clarity of the spec is what <br>
> matters so if it takes us little longer to finalize it – it’s fine <br>
> (this is what the working drafts are for). <br>
> <br>
> <br>
> <br>
> Thank you, <br>
> <br>
> Vlad <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> *From:<a href="mailto:%2Ampeg-OTspec%40yahoogroups.com">*mpeg-OTspec@yahoogroups.com</a>
<br>
> <mailto:<a href="mailto:mpeg-OTspec%40yahoogroups.com">mpeg-OTspec@yahoogroups.com</a>>
<br>
> [mailto:<a href="mailto:mpeg-OTspec%40yahoogroups.com">mpeg-OTspec@yahoogroups.com</a>] *On Behalf Of *bobh528
<br>
> *Sent:* Tuesday, August 07, 2012 6:04 PM <br>
> *To:* <a href="mailto:mpeg-OTspec%40yahoogroups.com">mpeg-OTspec@yahoogroups.com</a> <mailto:<a href="mailto:mpeg-OTspec%40yahoogroups.com">mpeg-OTspec@yahoogroups.com</a>>
<br>
> *Subject:* [mpeg-OTspec] Re: New work on 3rd edition of the OFF (AHG <br>
> kick-off) <br>
> - name table <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> (sorry -- previous post seems to have gone astray...) <br>
> <br>
> <br>
> <br>
> On 2012-07-27 at 15:06 Levantovsky, Vladimir wrote: <br>
> <br>
> I would like to ask you to review the first draft text <br>
> <br>
> <br>
> Thanks for getting this process going. <br>
> <br>
> I have some questions about the spec for the name table. <br>
> <br>
> 1) In section 5.2.6.3 Name IDs, below the table of name IDs, is a Note <br>
> in which the text: <br>
> <br>
> All 'name' table strings for platform ID 3 (Windows platform) must be <br>
> in Unicode, using the UTF-16 encoding form. The character set encding for 'name'
<br>
> table strings with platform ID 0 (Macintosh) is determined by the encoding ID. <br>
> <br>
> has been replaced with: <br>
> <br>
> <br>
> Note that OS/2 and Windows both require that all name strings be <br>
> defined in Unicode. Thus all 'name' table strings for platform ID = 3 <br>
> (Windows) will require two bytes per character. Macintosh fonts require single byte strings.
<br>
> <br>
> <br>
> This appears to be a regression to the text from MS spec 1.6 -- is <br>
> that intended? If so, the "two bytes per character" phrase needs to <br>
> be updated to modern language. <br>
> <br>
> But in either case, a key question is whether SMP characters (coded <br>
> using surrogate pairs) are permitted or not. If they are, then the <br>
> correct term to use is "UTF-16". If they are not, then "UTF-16" is <br>
> /not/ the correct term -- I think the correct term would then be "UCS-2". <br>
> <br>
> 2) Section 5.2.6.2 5.2.6.2 /Platform IDs, Platform-specific encoding <br>
> IDs and Language IDs/ currently includes this table: <br>
> <br>
> <br>
> *Windows platform-specific encoding IDs (platform ID= 3)* <br>
> <br>
> Platform ID <br>
> <br>
> <br>
> <br>
> Encoding ID <br>
> <br>
> <br>
> <br>
> Description <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 0 <br>
> <br>
> <br>
> <br>
> Symbol <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 1 <br>
> <br>
> <br>
> <br>
> Unicode BMP (UCS-2) <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 2 <br>
> <br>
> <br>
> <br>
> ShiftJIS <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> PRC <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 4 <br>
> <br>
> <br>
> <br>
> Big5 <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 5 <br>
> <br>
> <br>
> <br>
> Wansung <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 6 <br>
> <br>
> <br>
> <br>
> Johab <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 7 <br>
> <br>
> <br>
> <br>
> Reserved <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 8 <br>
> <br>
> <br>
> <br>
> Reserved <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 9 <br>
> <br>
> <br>
> <br>
> Reserved <br>
> <br>
> 3 <br>
> <br>
> <br>
> <br>
> 10 <br>
> <br>
> <br>
> <br>
> Unicode UCS-4 <br>
> <br>
> <br>
> What does the third column of this table mean? In the context, it <br>
> seems to be saying that if I want a name string with SMP characters in <br>
> it, then I can use <br>
> 3/10 encoding and encode the string in UCS-4. Is that what it is <br>
> really saying? If this is true, then it goes counter to /either /of <br>
> the quotes in my question 1 above (about UTF-16 or 2-byte characters). <br>
> <br>
> Bob Hallissy <br>
> <br>
> <br>
> <br>
> <br>
> <br>
> <br>
<br>
<br>
<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:white"><o:p></o:p></span></p>
</div>
</div>
</body>
</html>