<?xml version="1.0" encoding="utf-8"?>
<?xml-model
    href="file:///Users/peterbaker/work/GitHub/xgridfit-3/xgridfit/Schemas/xgridfit-sh.rnc"
    type="application/relax-ng-compact-syntax"?>
<xgridfit xmlns="http://xgridfit.sourceforge.net/Xgridfit2"
	  xmlns:xi="http://www.w3.org/2001/XInclude">

  <inputfont>JunicodeTwoBetaVF-Italic.ttf</inputfont>
  <outputfont>JunicodeTwoBetaVF-Italic-hinted.ttf</outputfont>

  <default type="init-graphics" val="no"/>
  <default type="cleartype" val="yes"/>
  <default type="assume-always-y" val="yes"/>

  <cv nm="baseline" val="0"/>
  <cv nm="cap-serif" val="35" col="b"/>
  <cv nm="cap-serif-undershoot" val="-4" col="g"/>
  <cv nm="cap-bar" val="37" col="b"/>
  <cv nm="cap-height" val="666"/>
  <cv nm="cap-height-overshoot" val="676 "/>
  <cv nm="cap-serif-overshoot" val="2" col="g"/>
  <cv nm="cap-round-stem" val="34" col="b"/>
  <cv nm="cap-baseline-undershoot" val="-13"/>
  <cv nm="G-serif" val="268"/>
  <!-- Adjusted as far as here -->
  <cv nm="lc-serif" val="24" col="b"/>
  <cv nm="lc-ascender" val="726 "/>
  <cv nm="lc-descender" val="-269"/>
  <cv nm="lc-round-stem" val="29" col="b"/>
  <cv nm="xheight" val="415"/>
  <cv nm="xheight-overshoot" val="425"/>
  <cv nm="lc-baseline-undershoot" val="-11"/>
  <cv nm="u-top-a" val="419"/>
  <cv nm="u-top-b" val="410"/>
  <cv nm="num-circle" val="41"/>
  <cv nm="sc-serif" val="28"/>
  <cv nm="sc-height" val="455"/>
  <cv nm="sc-height-overshoot" val="464"/>
  <cv nm="sc-baseline-undershoot" val="-9 "/>
  <cv nm="sc-serif-undershoot" val="-3"/>
  <cv nm="lc-markabove" val="495"/>

  <alias nm="cps" target="cap-serif"/>
  <alias nm="cpsu" target="cap-serif-undershoot"/>
  <alias nm="cph" target="cap-height"/>
  <alias nm="cpho" target="cap-height-overshoot"/>
  <alias nm="cpso" target="cap-serif-overshoot"/>
  <alias nm="cprs" target="cap-round-stem"/>
  <alias nm="cpbu" target="cap-baseline-undershoot"/>
  <alias nm="lcsu" target="cap-serif-undershoot"/>
  <alias nm="lc-serif-undershoot" target="cap-serif-undershoot"/>
  <alias nm="xh" target="xheight"/>
  <alias nm="xho" target="xheight-overshoot"/>
  <alias nm="lca" target="lc-ascender"/>
  <alias nm="lcbu" target="lc-baseline-undershoot"/>
  <alias nm="sch" target="sc-height"/>
  <alias nm="scho" target="sc-height-overshoot"/>
  <alias nm="scbu" target="sc-baseline-undershoot"/>

  <cvar>
    <tuple>
      <!-- weight min -->
      <region tag="wght" bot="-1.0" peak="-1.0" top="0.0"/>
      <cvv nm="cap-serif" val="31"/>
      <cvv nm="cap-bar" val="34"/>
      <cvv nm="cap-round-stem" val="32"/>
      <!--
      <cvv nm="lc-serif" val="21"/>
      <cvv nm="lc-round-stem" val="26"/>
      <cvv nm="num-circle" val="31"/>
      <cvv nm="sc-serif" val="27"/>
      -->
    </tuple>
    <tuple>
      <!-- weight max -->
      <region tag="wght" bot="0.0" peak="1.0" top="1.0"/>
      <cvv nm="cap-serif" val="42"/>
      <cvv nm="cap-bar" val="47"/>
      <cvv nm="cap-round-stem" val="42"/>
      <!--
      <cvv nm="lc-serif" val="33"/>
      <cvv nm="lc-round-stem" val="38"/>
      <cvv nm="num-circle" val="72"/>
      <cvv nm="sc-serif" val="33"/>
      -->
    </tuple>
    <!--
    <tuple>
      () width min )
      <region tag="wdth" bot="-1.0" peak="-1.0" top="0.0"/>
      <region tag="wght" bot="0.0" peak="1.0" top="1.0"/>
      <cvv nm="cap-serif" val="34"/>
      <cvv nm="num-circle" val="51"/>
    </tuple>
    <tuple>
      <region tag="ENLA" bot="0.0" peak="1.0" top="1.0"/>
      <cvv nm="xheight-overshoot" val="676"/>
      <cvv nm="xheight" val="663"/>
      <cvv nm="lc-baseline-undershoot" val="-13"/>
      <cvv nm="lc-round-stem" val="34"/>
    </tuple>
    -->
  </cvar>

  <prep>
    <!-- assuming we follow ttfautohint's prep -->
    <enable-instructions/>
    <if test="pixels-per-em &gt; 300">
      <disable-instructions/>
    </if>
    <push>4 511</push>
    <command nm="SCANCTRL"/>
    <command nm="SCANTYPE"/>
    <if test="pixels-per-em &lt; 40">
      <setcv nm="xheight-overshoot" unit="pixel" val="control-value(xheight)"/>
      <setcv nm="lc-baseline-undershoot" unit="pixel" val="control-value(baseline)"/>
    </if>
    <if test="pixels-per-em &lt; 144">
      <setcv nm="cap-serif-overshoot" unit="pixel" val="control-value(cap-serif-undershoot)"/>
      <setcv nm="u-top-a" unit="pixel" val="control-value(xheight)"/>
      <setcv nm="u-top-b" unit="pixel" val="control-value(xheight)"/>
    </if>
  </prep>

  <fn nm="serif-helper" stack-safe="yes">
    <pm nm="base"/>
    <pm nm="pt-a"/>
    <pm nm="base-cv" val="baseline"/>
    <pm nm="cup-cv" val="cap-baseline-undershoot"/>
    <pm nm="ppem" val="190"/>
    <mv di="base-cv" p="base"/>
    <if test="pixels-per-em &lt; ppem">
      <al p="pt-a"/>
      <else>
        <command nm="RTDG"/>
        <mv r="base" p="pt-a" di="cup-cv"/>
        <command nm="RTG"/>
      </else>
    </if>
  </fn>

  <mo nm="cap-serif">
    <pm nm="base"/>
    <pm nm="base-sh" val="-1"/>
    <pm nm="pt-a"/>
    <pm nm="pt-a-sh" val="-1"/>
    <pm nm="pt-b"/>
    <pm nm="pt-b-sh" val="-1"/>
    <pm nm="base-cv" val="baseline"/>
    <pm nm="cup-cv" val="cap-serif-undershoot"/>
    <pm nm="ppem" val="160"/>
    <mv di="base-cv" p="base">
      <sh compile-if="not( nan(base-sh) ) and base-sh &gt;= 0" p="base-sh"/>
      <sh compile-if="nan(base-sh)">
        <set ref="base-sh"/>
      </sh>
      <mv di="cap-serif" p="pt-b">
        <sh compile-if="not( nan(pt-b-sh) ) and pt-b-sh &gt;= 0" p="pt-b-sh"/>
        <sh compile-if="nan(pt-b-sh)">
          <set ref="pt-b-sh"/>
        </sh>
      </mv>
    </mv>
    <callf nm="serif-helper">
      base: base,
      pt-a: pt-a,
      base-cv: base-cv,
      cup-cv: cup-cv,
      ppem: ppem
    </callf>
    <sh compile-if="not( nan(pt-a-sh) ) and pt-a-sh &gt;= 0" r="pt-a" p="pt-a-sh"/>
    <sh compile-if="nan(pt-a-sh)" r="pt-a">
      <set ref="pt-a-sh"/>
    </sh>
  </mo>

  <mo nm="hook">
    <pm nm="pt-a"/>
    <pm nm="cv" val="-1"/>
    <pm nm="pt-b"/>
    <pm nm="pt-c"/>
    <compile-if test="cv &gt;= 0">
      <push>pt-c pt-b pt-a cv</push>
      <command nm="MIAP" modifier="1"/>
      <command nm="MDRP">
        <modifier type="col" val="b"/>
      </command>
      <command nm="MDRP">
        <modifier type="col" val="b"/>
      </command>
      <else>
        <push>pt-c pt-b pt-a</push>
        <command nm="MDAP" modifier="1"/>
        <command nm="MDRP">
          <modifier type="col" val="b"/>
        </command>
        <command nm="MDRP">
          <modifier type="col" val="b"/>
        </command>
      </else>
    </compile-if>
  </mo>

  <mo nm="cap-round-stem">
    <pm nm="pt-a"/>
    <pm nm="pt-b"/>
    <pm nm="cv" val="cap-baseline-undershoot"/>
    <pm nm="stem-cv" val="-1"/>
    <compile-if test="stem-cv != -1">
      <mv di="cv" p="pt-a">
        <mv di="stem-cv" p="pt-b"/>
      </mv>
      <else>
        <mv di="cv" p="pt-a">
          <mv p="pt-b"/>
        </mv>
      </else>
    </compile-if>
  </mo>

  <mo nm="mid-stem">
    <pm nm="ref1"/>
    <pm nm="ref2"/>
    <pm nm="pt-a"/>
    <pm nm="pt-b"/>
    <pm nm="cv" val="-1"/>
    <push>pt-a pt-a ref2 ref1</push>
    <command nm="SRP1"/>
    <command nm="SRP2"/>
    <command nm="IP"/>
    <command nm="MDAP" modifier="1"/>
    <compile-if test="cv &gt;= 0">
      <push>pt-b cv</push>
      <command nm="MIRP" modifier="11100"/>
      <else>
        <push>pt-b</push>
        <command nm="MDRP" modifier="11100"/>
      </else>
    </compile-if>
  </mo>

  <mo nm="mid-stem-serif">
    <pm nm="ref1"/>
    <pm nm="ref2"/>
    <pm nm="pt-a"/>
    <pm nm="pt-b"/>
    <pm nm="sh-a"/>
    <pm nm="sh-b"/>
    <pm nm="cv" val="-1"/>
    <push>sh-a pt-a pt-a ref2 ref1</push>
    <command nm="SRP1"/>
    <command nm="SRP2"/>
    <command nm="IP"/>
    <command nm="MDAP" modifier="1"/>
    <command nm="SHP" modifier="1"/>
    <compile-if test="cv &gt;= 0">
      <push>sh-b pt-b cv</push>
      <command nm="MIRP" modifier="11101"/>
      <command nm="SHP" modifier="0"/>
      <else>
        <push>sh-b pt-b</push>
        <command nm="MDRP" modifier="11101"/>
        <command nm="SHP" modifier="0"/>
      </else>
    </compile-if>
  </mo>

  <gl pnm="A">
    <cn nm="bottom" val="{44;0}"/>
    <cn nm="top" val="{510;676}"/>
    <set nm="bottom-a" p="{148;-3} {297;-3} {506;-3}"/>
    <set nm="bottom-b" p="{159;34} {308;34} {516;34}"/>
    <mv di="cpho" p="top">
      <sh p="{435;575}"/>
    </mv>
    <callm nm="cap-serif">
      base: bottom,
      pt-a: {-60;-3},
      pt-b: {-50;34},
      base-sh: {401;0},
      pt-a-sh: bot-a,
      pt-b-sh: bot-b
    </callm>
    <callm nm="mid-stem">
      ref1: top, ref2: bottom, pt-a: {196;259}, pt-b: {217;293}
    </callm>
  </gl>

</xgridfit>
