<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>Alright, it's sounding like the idea may be "the instruction set
itself has enough <br>
functionality to handle the cases, so we can let glyf VARC hinting
practices <br>
evolve on that basis." I'd be worried that people who seem to be
towards the upper<br>
levels of typical expertise with TT instructions are fuzzy on the
relevant functionality,<br>
but that isn't my battle.</p>
<p>That would still leave 6 from my earlier list:</p>
<p> </p>
<blockquote>Should there be a VARC-component flag indicating that
what is being loaded is not an individual component but the
(limited) composite-level TT instructions for this glyph? (The
natural home for those instructions being in the glyph with the
same GID, as same-GID-loading is already supported by the spec?)<br>
</blockquote>
<p>I suppose one could also just add a record type that inlines the
composite-level<br>
instructions directly.<br>
</p>
<p>This has to do with this line from the glyf composite spec (
<a class="moz-txt-link-freetext" href="https://learn.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description">https://learn.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description</a>
):</p>
<blockquote>
<p>A parent composite glyph description can include instructions
that apply to the composite as a whole, after instructions for
each child have been performed.<br>
</p>
</blockquote>
<p>This possibility appears to be missing from VARC as specified. (I
believe it was also<br>
missing from the earlier drafts but maybe there was a different
way of tucking<br>
those instructions into the composite record.)<br>
</p>
<p>Skef<br>
</p>
<div class="moz-cite-prefix">On 1/26/24 13:04, Greg Hitchcock wrote:<br>
</div>
<blockquote type="cite"
cite="mid:SJ0PR00MB103926806416F78F8915D807BE792@SJ0PR00MB1039.namprd00.prod.outlook.com">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator"
content="Microsoft Word 15 (filtered medium)">
<style>@font-face
{font-family:Mangal;
panose-1:0 0 4 0 0 0 0 0 0 0;}@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
{font-family:"Yu Gothic";
panose-1:2 11 4 0 0 0 0 0 0 0;}@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}@font-face
{font-family:Aptos;}@font-face
{font-family:"Sitka Text";
panose-1:0 0 0 0 0 0 0 0 0 0;}@font-face
{font-family:"\@Yu Gothic";
panose-1:2 11 4 0 0 0 0 0 0 0;}@font-face
{font-family:"Segoe UI";
panose-1:2 11 5 2 4 2 4 2 2 3;}p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:12.0pt;
font-family:"Aptos",sans-serif;}a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}span.EmailStyle20
{mso-style-type:personal-reply;
font-family:"Sitka Text";
color:windowtext;
font-weight:normal;
font-style:normal;}.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;
mso-ligatures:none;}div.WordSection1
{page:WordSection1;}</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]-->
<div class="WordSection1">
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Sitka Text"">Through
a combination of the GETINFO instruction and the INSTCTRL
instruction, glyphs or fonts can make educated decisions
about whether to apply instructions under different
circumstances such as rotations, stretching, &c.
Typically we recommend in the pre-program to disable hints
under rotation, but if someone comes up with a clever
algorithm for handling this, that is an option.<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Sitka Text""><o:p> </o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Sitka Text"">GregH<o:p></o:p></span></p>
<p class="MsoNormal"><span
style="font-size:11.0pt;font-family:"Sitka Text""><o:p> </o:p></span></p>
<div>
<div
style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<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 <a class="moz-txt-link-rfc2396E" href="mailto:mpeg-otspec-bounces@lists.aau.at"><mpeg-otspec-bounces@lists.aau.at></a>
<b>On Behalf Of </b>Skef Iterum via mpeg-otspec<br>
<b>Sent:</b> Friday, January 26, 2024 11:33 AM<br>
<b>To:</b> Laurence Penney <a class="moz-txt-link-rfc2396E" href="mailto:lorp@lorp.org"><lorp@lorp.org></a><br>
<b>Cc:</b> mpeg-otspec <a class="moz-txt-link-rfc2396E" href="mailto:mpeg-otspec@lists.aau.at"><mpeg-otspec@lists.aau.at></a><br>
<b>Subject:</b> Re: [MPEG-OTSPEC] VARC, glyf, and
TT-instructions<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<table class="MsoNormalTable" style="width:100.0%" width="100%"
cellspacing="0" cellpadding="0" border="0" align="left">
<tbody>
<tr>
<td
style="background:#A6A6A6;padding:5.25pt 1.5pt 5.25pt 1.5pt"><br>
</td>
<td
style="width:100.0%;background:#EAEAEA;padding:5.25pt 3.75pt 5.25pt 11.25pt"
width="100%">
<div>
<p class="MsoNormal"
style="mso-element:frame;mso-element-frame-hspace:2.25pt;mso-element-wrap:around;mso-element-anchor-vertical:paragraph;mso-element-anchor-horizontal:column;mso-height-rule:exactly">
<span
style="font-size:9.0pt;font-family:"Segoe UI",sans-serif;color:#212121">You
don't often get email from
<a href="mailto:mpeg-otspec@lists.aau.at"
moz-do-not-send="true"
class="moz-txt-link-freetext">mpeg-otspec@lists.aau.at</a>.
<a
href="https://aka.ms/LearnAboutSenderIdentification"
moz-do-not-send="true">
Learn why this is important</a><o:p></o:p></span></p>
</div>
</td>
<td
style="width:56.25pt;background:#EAEAEA;padding:5.25pt 3.75pt 5.25pt 3.75pt;align:left"
width="75">
<br>
</td>
</tr>
</tbody>
</table>
<div>
<p><o:p> </o:p></p>
<div>
<p class="MsoNormal">On 1/24/24 23:47, Laurence Penney
wrote:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">On 25 Jan 2024, at 01:25, Skef
Iterum via mpeg-otspec <a
href="mailto:mpeg-otspec@lists.aau.at"
moz-do-not-send="true">
<mpeg-otspec@lists.aau.at></a> wrote:<o:p></o:p></p>
</blockquote>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">There is a distinction between
whether the text path itself is skewed or<br>
rotated and whether a component in a composite is
skewed or rotated.<br>
Asking around it seems as though with the existing
glyf components<br>
instructions are <i>not</i> automatically turned off
when "compositing", but<br>
perhaps that info is wrong. <o:p></o:p></p>
<p>Either way, though, that seems like something the
specification should<br>
clarify.<o:p></o:p></p>
</blockquote>
</div>
<div>
<p class="MsoNormal">I asked similar questions when I was
getting my head around TT hinting, and recall being told
that skewed or rotated components were not hinted. The
person I asked would most likely have been Greg
Hitchcock.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</blockquote>
<p class="MsoNormal">Josh Hadley on our team got curious about
this and did an experiment or two<br>
in VTT. As far as we can tell there is no automatic
disabling of hints when using<br>
"not nice" transformations, at least in that tool. We can
provide a specific<br>
example or two if anyone needs them.<br>
<br>
It's possible that the "client side" implementations work
differently than the <br>
development tools but designers are likely to take the
guidance of those tools<br>
unless there is very strong conventional wisdom pointing in
a different<br>
direction.<o:p></o:p></p>
<p>Skef<o:p></o:p></p>
</div>
</div>
</blockquote>
</body>
</html>