Skip to content

Instantly share code, notes, and snippets.

@simoncozens
Created April 8, 2021 12:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save simoncozens/47d6bb1d2c691756385df47463744bd7 to your computer and use it in GitHub Desktop.
Save simoncozens/47d6bb1d2c691756385df47463744bd7 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"from glyphtools import get_glyph_metrics, get_beziers\n",
"from babelfont import Babelfont\n",
"from beziers.path.representations.fontparts import FontParts\n",
"import matplotlib.pyplot as plt\n",
"from beziers.point import Point\n",
"\n",
"f = Babelfont.open(\"MyFont.glyphs\")\n",
"\n",
"def get_anchor(name, anchor_name):\n",
" for anchor in f[name].anchors:\n",
" if anchor.name == anchor_name:\n",
" return anchor"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def determine_kern(\n",
" font, glyph1, glyph2, targetdistance, offset1=(0, 0), offset2=(0, 0), maxtuck=0.4\n",
"):\n",
" \"\"\"Determine a kerning value required to set two glyphs at given ink-to-ink distance.\n",
"\n",
" The value is bounded by the ``maxtuck`` parameter. For example, if\n",
" ``maxtuck`` is 0.20, the right glyph will not be placed any further\n",
" left than 80% of the width of left glyph, even if this places the\n",
" ink further than ``targetdistance`` units away.\n",
"\n",
" Args:\n",
" font: a ``fontTools`` TTFont object or a ``glyphsLib`` GSFontMaster\n",
" object OR a ``babelfont`` Font object.\n",
" glyph1: name of the left glyph.\n",
" glyph2: name of the right glyph.\n",
" targetdistance: distance to set the glyphs apart.\n",
" offset1: offset (X-coordinate, Y-coordinate) to place left glyph.\n",
" offset2: offset (X-coordinate, Y-coordinate) to place right glyph.\n",
" maxtuck: maximum proportion of the left glyph's width to kern.\n",
"\n",
" Returns: A kerning value, in units.\n",
" \"\"\"\n",
" paths1 = get_beziers(font, glyph1)\n",
" paths2 = get_beziers(font, glyph2)\n",
" metrics1 = get_glyph_metrics(font, glyph1)\n",
" metrics2 = get_glyph_metrics(font, glyph2)\n",
"\n",
" offset1 = Point(*offset1)\n",
" offset2 = Point(offset2[0] + metrics1[\"width\"], offset2[1])\n",
" kern = 0\n",
" last_best = None\n",
"\n",
" iterations = 0\n",
" while True:\n",
" # Compute min distance\n",
" min_distance = None\n",
" for p1 in paths1:\n",
" p1 = p1.clone().translate(offset1)\n",
" for p2 in paths2:\n",
" p2 = p2.clone().translate(Point(offset2.x + kern, offset2.y))\n",
" d = p1.distanceToPath(p2, samples=3)\n",
" if not min_distance or d[0] < min_distance:\n",
" min_distance = d[0]\n",
" if not last_best or min_distance < last_best:\n",
" last_best = min_distance\n",
" else:\n",
" break # Nothing helped\n",
" if abs(min_distance - targetdistance) < 1 or iterations > 10:\n",
" break\n",
" iterations = iterations + 1\n",
" kern = kern + (targetdistance - min_distance)\n",
" print(glyph1, glyph2, \"at\", offset1, offset2, \" Pre-tuck was \", kern)\n",
" kern = kern - metrics1[\"rsb\"]\n",
" if maxtuck:\n",
" kern = max(kern, -(metrics1[\"xMax\"] * (1+maxtuck)) + metrics1[\"rsb\"])\n",
" else:\n",
" kern = max(kern, -(metrics1[\"xMax\"]) + metrics1[\"rsb\"])\n",
" return int(kern)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SINi2 REu1 at <0.0,299.0> <484.0,0.0> Pre-tuck was -190.97230006997196\n",
"['REu1', 'SINi2', 'LAMf1'] -240\n",
"SINi1 REu1 at <0.0,62.0> <421.0,0.0> Pre-tuck was -23.339242935655847\n",
"['REu1', 'SINi1', 'ALIFf1'] -73\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3MAAAGwCAYAAAADqjxJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAACsBklEQVR4nOzdd3hUVf7H8fdJQhoEAgRC7733IlWqgIIiKqIrqIC6il2xrC7r4sraca2IKFgQaYKIIEV67733mkAgQIC0Ob8/MpkfIZ0kk0z4vJ4nT2buOfee7yBy5nvvKcZai4iIiIiIiHgWr9wOQERERERERDJPyZyIiIiIiIgHUjInIiIiIiLigZTMiYiIiIiIeCAlcyIiIiIiIh5IyZyIiIiIiIgHylAyZ4wJNsZMMcbsMsbsNMa0NsYUM8bMM8bsdf4u6qxrjDGfGGP2GWO2GGOa5OxHEBERERERufmYjOwzZ4wZDyy11o41xvgCgcBrQIS1dpQx5hWgqLV2uDGmJzAM6Am0BEZba1umdf2QkBBbqVKlLH4UERHxBOvXrz9jrS2R23F4CvWRIiI3hxvpH33Sq2CMKQK0BwYBWGtjgBhjTB+go7PaeGARMBzoA0ywCVniKudTvdLW2pOptVGpUiXWrVuXmbhFRMRDGWMO53YMnkR9pIjIzeFG+seMDLOsDIQD3xpjNhpjxhpjCgKh1yRop4BQ5+uywNFrzj/mPCYiIiIiIiLZJCPJnA/QBPjCWtsYiAJeubaC8ylc+uM1r2GMGWqMWWeMWRceHp6ZU0VERPI19ZEiIpIRGUnmjgHHrLWrne+nkJDcnTbGlAZw/g5zlh8Hyl9zfjnnsSSstWOstc2stc1KlNDUCRERkUTqI0VEJCPSTeastaeAo8aYms5DnYEdwExgoPPYQGCG8/VM4CHnqpatgMi05suJiIiIiIhI5qW7AIrTMOBH50qWB4CHSUgEfzHGPAocBu511p1NwkqW+4DLzroiIiIiIiKSjTKUzFlrNwHNUijqnEJdCzyZtbBEREREREQkLRnaNFxERERERETyFiVzIiIiIiIiHkjJnIjkG1FRUTgcjiTH4uLiuHz5MgkjwEVERG4+8fHxXL58Odnxy5cvExsbmwsRSXZRMici+cK3335L4cKFKVCgAP7+/kl+goKCWLRoUW6HKCIikiuqVq1KUFAQfn5+rr7R19eXoKAgmjRpktvhSRZkdDVLEZE87erVq66nctHR0cnKT58+7e6QRERE8oSYmBgcDgcxMTHJyiIjI3MhIskuejInIvlC0aJFAWjVqhVXrlxx/TRv3hyAK1eu5GZ4IiIiuSYgIACAZcuWufrHlStXAmiYpYfTkzkRyReuXr0K4Bo+ksjb2xuArVu35kpcIiIiuS0uLg6AoKAgVx9ZoUIFAM6ePZtrcUnW6cmciOQLx48fB6BYsWJJjleuXBkAPz8/t8ckIiKSFyQmbKVLl3YdK1GiBJDwZC4x2RPPo2RORPKFo0ePAlC8ePEkx2vXrg2AMcbtMYmIiOS2S5cuERUVRYECBQgJCXEdL1CgAIULFwbg4sWLuRWeZJGSORHJFxKTucQ7jYmCgoKAhG0LREREbjaJ/WNISEiyG5vqIz2fkjkRyReu7ayulbi/3IYNG9wek4iISG5LrX8EXHvPXbp0ya0xSfZRMiciHu/KlSvs3r0bgFKlSiUpi4+PB+DChQtuj0tERCS3bd68GYAyZcokK0u84antCTyXkjkR8Xhr1qwhJiaGSpUqUahQoSRlRYoUATSEREREbk5LliwBoE6dOsnKEoddJt74FM+jZE5EPF5iR1W3bt1kZYlDRxK3LhAREblZxMfHs3TpUgDq1auXYjnAmTNn3BqXZB8lcyLi8RKTuZQ6qsTVLcuXL+/WmERERHLbtm3biIyMpESJEskWCAMIDg4Gkm5ZIJ4lQ8mcMeaQMWarMWaTMWad81gxY8w8Y8xe5++izuPGGPOJMWafMWaLMaZJTn4AEbm5hYWFsXjxYry8vFJ8Mpd41/HajcRFRERuBpMnTwagQYMGKZYnzplTH+m5fDJR91Zr7bXPYF8BFlhrRxljXnG+Hw70AKo7f1oCXzh/i8hN5Pjx44wdO5bQ0FDX3cDIyEiioqIYMGBAsv3gbtR3331HbGwsvXr1cq3Yda3Tp08D/3/3UUREJLf98ssv7N27l8qVK+Pn50d8fDynT5+mUqVK3HHHHdnSRmxsLOPGjQOgWbNm7Nixg169euHl9f/Pcs6fPw9AyZIls6VNcb/MJHPX6wN0dL4eDywiIZnrA0ywCan+KmNMsDGmtLX2ZFYCFRHPMmHCBEaMGJFiWbly5bjrrruy3IbD4WDMmDEA9O3bl2+//ZbWrVsnqXPixAkg+WbiIiIiueWFF17g2LFjyY6XLl0625K5WbNmcfLkSWrXrs3FixdZtWoVjzzyiOsGa3R0NBcvXsTLyyvFIZjiGTKazFngT2OMBb6y1o4BQq9J0E4Boc7XZYFrb48fcx5TMidyEzl48CCQkLi1aNECgLlz5xIVFZXkrmBWzJo1i/3791OhQgUeeughmjdvTsWKFZPUOX78OADFihXLljZFRESywuFwEBYWBkCPHj0ICAggIiKCRYsWZVsb1lo+/vhjAIYOHcpDDz3EqVOnkuw1l3izs1ixYtnWL4v7ZTSZa2utPW6MKQnMM8bsurbQWmudiV6GGWOGAkMBKlSokJlTRcQDJO779vLLLzNs2DAAbrnlFlauXJktq2ZdvnyZZ599FoDnnnsOHx8f6tevn6xeYjKnJ3PiSdRHiuRfO3bsICYmhmLFijF79mwADh06ROXKlbl06RLx8fF4e3tnqY0ff/yRJUuWULx4cQYOHEjRokWT3dRU/5g/ZCgNt9Yed/4OA6YDLYDTxpjSAM7fYc7qx4Frl40r5zx2/TXHWGubWWub6dGuSP7icDjYunUrAC1b/v+U2caNGwPw888/Z7mNkSNHcvDgQRo2bMhTTz2VYp24uDhXHCltliqSV6mPFMm/Fi9eDECtWrVcxypWrEjp0qW5ePEi8+fPz9L1IyIieP755wF4//33KVq0aIr10tpMXDxHusmcMaagMSYo8TXQDdgGzAQGOqsNBGY4X88EHnKuatkKiNR8OZGby/r16zl37hzFixenSZP/X9C2TZs2+Pj4sGDBghQXK8mohQsX8t5772GM4csvv8THJ+VBBjt37uTy5cuULFlSC6CIiEie8McffwDQtm1b1zFjDB07dgRg/PjxN3ztuLg4hgwZQnh4OO3bt2fgwIGp1l2zZg0ANWvWvOH2JPdl5MlcKLDMGLMZWAP8bq2dA4wCuhpj9gJdnO8BZgMHgH3A18Dfsz1qEcnTZsxIuLfTqlWrJInW1q1bKVGiBNZaRo0aldrpaVqxYgW9e/cmLi6O5557jlatWqVaN7GjqlGjxg21JSIikp3i4uJce6P26NHDdfzixYuu1ZenT5/Ojh07Mn1th8PB4MGDmTZtGoULF+arr77CGJNq/dWrVwNQvXr1TLcleUe6yZy19oC1tqHzp6619m3n8bPW2s7W2urW2i7W2gjncWutfdJaW9VaW99auy6nP4SI5C2JcwBuvfXWJMcDAwOpX78+3t7efP7557z33nuZvm7Pnj2Jiorib3/7W7rnr1q1ClAyJyIiecOqVau4ePEipUuXTrL3m7e3N6VLl6Zu3bpcvXqV7t27c+TIkQxf98KFCzz88MOMHz+ewMBAZs+enWQY5/UiIiLYvXs3Pj4+VKpUKSsfSXKZlq4RkWwVHh7Oxo0b8fHxcQ0ZSfTGG28wd+5cJkyYACQsjvLoo4+6VvVKzcmTJ+nfvz+9evUiMjKSfv36MW7cuDRX34qPj2fWrFkAKS6MIiIi4m6J/VLz5s0JCgpyHQ8MDOSHH35gzZo1tG3blmPHjtGiRQsmT55MfHx8qtez1vLrr79Sp04dJkyYgJ+fHzNnzqRNmzYZiqNOnToUKFAgGz6Z5Jas7DMnIpLMTz/9BCQkUKVKlUqxzoABA7h48SJPP/0048aNY/z48XTp0oW+ffsSGhrKlStXCAwMZOfOnfz++++sWLGC+Ph4AgMD+fe//83DDz9MTExMqnPlAJYvX86pU6eoXLkyVapUyZHPKiIiklFxcXGuPvKWW25JMYkKDAxk5syZ3HHHHSxfvpx7772X0qVLc++999KuXTuMMa7kbv78+cyePdu1X12LFi346quvKFu2LNbaNIdYTpkyxRWHeDYlcyKSbeLj41372vTo0SPJXcfrdejQgYYNG3Lx4kX27NnD3LlzmTt3bop1vby8aNmyJYMHD6ZEiRI89NBDFC5cmB9//DHV6yd2VPfcc0+aHZqIiIg7TJ8+naNHj1K6dGnatWuXar2iRYtSo0YNIiIiiIiI4OTJk4wePZrRo0enWD84OJh77rmHnj17snDhQmbMmMHo0aNp1KhRivUvXLjA3LlzMcbQunXr7PhokouUzIlItvn11185dOgQpUqVokWLFhQqVCjVuqGhoTRv3pymTZvi5+fHypUr2bJlC+fOneP48eMEBgZSq1YtmjZtSuPGjSlYsCCQMKSkfv36BAQEpHrtq1evMmnSJADuvvtu16RyERGR3PLhhx8C0KdPH4oUKZJm3Ro1alC8eHHatGnDgQMHWLp0KSdPnuTQoUPExcVRsWJFatWqRbNmzahSpYpr2kFISAj16tVLc7uBX375hZiYGNq1a5fqtgXiOZTMiUi2+eijjwC44447KFKkSJpz2ooWLcpnn33mev/AAw9kuJ3evXunWf7DDz8QFhZGo0aNaN68uWtugIiISG5YuXIlq1atIigoiE6dOlG4cOE067/yyitJ3ifuG5cRDz30UKplDoeD999/H4DHHnssw9eUvEvJnEg+s2XLFk6dOkW5cuVcwwsvXLhAeHg43bt3z7GJzr/++ivLly8nKCiILl26pDnEMidd21G99NJLGmIpIiJAQv8wa9YsSpcu7Ro5Yq3l2LFjlCxZMtVhidnR7vDhwwG4/fbb8ff3z7U+ctasWezevZsKFSpw7733MmfOnFyJQ7KPkjmRfObOO+/k4MGDKZZNmzaNu+66K9vbPH/+PH//e8KWkk899RQBAQG51lFNnz7d1VHdc889uRKDiIjkPb/++it33313imVVqlRh//79OdLuV199xdKlSylZsiR33HEHQK70kdZa3nnnHQCee+45rWKZT2hrApF85PDhw65Erlq1atSqVYtatWoRGBgIJAzzyAkvv/wyJ0+epHXr1tx+++0A6Q4hyQlRUVG88MILAAwfPlwdlYiIuEybNg2AQoUKufrHqlWrAnDkyBFiYmKyvc0jR47w8ssvA/D+++9TqFAhAgMD8fb2zva20vP999+zatUqSpYsyeDBg93evuQMJXMi+ci4ceMAaNeuHXv37mXnzp3s3LmTf/zjHwD8+eefWGuztc2ff/6Zr7/+Gl9fX8aOHcvPP//M5MmT01z8JKe8/fbbHD58mEaNGjF06FC3ty8iInmTw+FwrZg8ceJEV/+4b98+ypUrR1xcHFOnTs3WNi9fvswDDzzApUuXuOuuu6hduzZjxozh5MmT2dpORpw7d44XX3wR+P+kUvIHJXMi+YS1ll9++QWA/v37Jynr168fhQsXZvPmzUycODHb2vz999/529/+BsCoUaOoWbMmxhi8vb1dTwPdZfPmzbz//vsYY/jiiy/S3INORERuLnPmzOHMmTOULFmSHj16JCnr168fkDCi48qVK9nSXkxMDP369WPZsmWUKVOGzz77jNjYWLy8vHIlkXrppZcIDw+nffv2PPjgg25vX3KOkjmRfOLPP/9k165dFCxYkAEDBiQpq1Chgmt1qxdeeIELFy5kS3v9+vUjLi6O4cOH89xzz+Ht7c3o0aMZM2ZMmitZZrdz587Rt29fYmNjeeyxx2jVqpXb2hYRkbxv1KhRQMJqyNcPcXz44YcpX748R48e5d13381yW1ev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Im62a9cuBg0a5FrKeejQobz//vsEBQXleNuLFi3igw8+wBjDG2+8Qfv27dUZi4h4gKNHj/Loo48yb948AO655x4+//xzQkJCcrzt7du38+qrrwLwwgsv0KNHD3x8lEbkBerBRUTcJD4+ng8//JDGjRuzevVqypYty5w5c/jqq6/ckshFRkYyYMAAAPr378/gwYPVGYuI5HHWWr799lvq1avHvHnzKF68OJMmTeKXX35xSyIXHR1Nv379iImJoWvXrrz44ota9TgPUS8uIuIG+/fvZ9CgQSxbtgyAQYMG8dFHHxEcHOyW9mNjY+nVqxcnT56kSpUqfP755+qMRUTyuJMnTzJ06FBmzZoFQJ8+ffjyyy8pVaqUW9q31nLfffexa9cuSpYsybhx4wgMDHRL25IxejInIpKDHA4Hn332GQ0aNGDZsmWUKlWKmTNn8u2337otkYuPj6dNmzYsX76cggULMmXKFLe1LSIimWet5aeffqJu3brMmjWLIkWKMGHCBKZPn+7WRK5nz57MmDEDHx8ffvjhB8qVK+eWtiXj9GRORCSHHD58mEceeYSFCxcCcP/99/O///2P4sWLuy0Gay39+/dn7dq1APzvf/+jcePGbmtfREQyJywsjCeeeIJp06YBcNtttzF27FjKli3r1jiee+455syZA8A///lPunbt6tb2JWP0ZE5EJJtZaxk7diz169dn4cKFhISEMGXKFH766Se3JnLx8fEMGjSIKVOmYIzhH//4Bw8//LDb2hcRkcyZOnUqdevWZdq0aQQFBfH1118ze/ZstyZy1lpefPFFRo8eDSQs0vX666+7rX3JHD2ZExHJRsePH2fIkCH88ccfAPTt25cvvviCkiVLujWO06dP07dvX1asWIGPjw9jx45l4MCBbo1BREQy5uzZswwbNoyJEycC0KlTJ8aNG0fFihXdGkfiQlmzZ88GYNSoUQwfPtytMUjm6MmciEg2sNby/fffU69ePf744w+KFi3Kjz/+yJQpU9yeyC1atIj69euzYsUK1zwLJXIiInnTb7/9Rr169Zg4cSKBgYF8+umnzJs3z+2J3IYNG2jQoAGzZ88mICCA//3vf0rkPICSORGRLDp16hR33XUXDz30EOfPn6dXr15s27aNAQMGuHUzbofDwX/+8x86depEeHg4devWZc6cOdx///1ui0FERDLm/Pnz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IiIi4oGUzImIiIiIiHggJXMiIiIiIiIeSMmciIiIiIiIB1IyJyIiIiIi4oGMtTa3Y8AYEw4czu04UhECnMntILJA8ecuT47fk2MHxZ/b0oq/orW2hDuD8WR5uI/Mz39HPYHiz12KP3fl1/gz3T/miWQuLzPGrLPWNsvtOG6U4s9dnhy/J8cOij+3eXr8kj5P/2+s+HOX4s9dij93ZWf8GmYpIiIiIiLigZTMiYiIiIiIeCAlc+kbk9sBZJHiz12eHL8nxw6KP7d5evySPk//b6z4c5fiz12KP3dlW/yaMyciIiIiIuKB9GRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDyQkjkREREREREPpGRORERERETEAymZExERERER8UBK5kRERERERDxQhpI5Y0ywMWaKMWaXMWan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5ZpzLsm98cYbXLlyhXbt2lG7du00b1TOnz8f0P5ykn8omcth0dHRDBo0CIDbbruN4sWLU7x48XTPCw4OpkOHDpQuXZrSpUvTu3dvjh07xsGDBzl8+DDbtm1z7cVTqlQpqlevTtWqVSlWrBgAV69e5dZbb6Vy5cqptvHrr7+6NjCHhL1Wli5dirWWl19++YY/8+nTpxk+fDjjxydsQ3j//fczZswYChUqdMPXlKxbunQpM2bMICAggFatWgGk+d9k5cqVAHTunOwBvIhItpg1axY//vgjPj4+3H333Rm62QlQs2ZNChQoQKNGjWjevDmDBw9m3759HD58mKNHj7J7924AatWqRcWKFalWrRqVKlWiQIECAPj5+XHu3Dn8/PxSvP6lS5d47bXXkiRyLVq0YM2aNTRv3pyaNWve0Oe11vLHH3/w+OOPc/ToUYKDg/nuu+/o06fPDV1PElZd/u677/Dy8qJdu3bExMQQHBycav1ly5YB2jtV8pHMjsvMiZ/8PB/gueees4CtUKGCnTRpkl27dm1uh5TEnDlzbLFixVzj9QFbvHjxG5rgfeHCBTtixAhbqFAhC1h/f387ZsyYHJksLpkTFxdnmzdvbgH7wAMP2NatW9vPPvss1foRERHWGGO9vLzsuXPn3Beo3BTQnDn1kTZhXm5ISIgF7NChQ+3MmTNtREREboflcvXqVTtkyJAk/SNgx44de0PXW716te3YsaPrOi1btkx3fqCkzeFw2K5du1rA3n333bZNmzZ21KhRqdaPjo62fn5+FrD79+93Y6QiGXMj/WOud1I2H3dUc+fOdS0g8c0339iZM2faI0eO5HZYyURFRdkBAwYk6axat25tR48ebU+cOJHuuX/88Yd94IEHbGBgoOv822+/3e7YscNNn0DS8+9//9sCtnTp0nb//v32u+++S3PBgJ9//tkCtm7dum6MUm4WSubUR8bHx9vu3btbwHbs2NH++uuvds6cOXny5t/SpUuT9I9BQUH2kUcesXPnzrUxMTGpnudwOOyhQ4fsBx98YBs3buw6v2jRova9995Ld1EzSd9nn31mAVukSBG7Z88eO2HCBLtly5ZU6y9YsMACtnz58m6MUiTjbqR/1DDLHBIeHu4a//7mm28SGhqKw+HIk5NtAwMDkwz9LFCgACtXrmTlypU888wzlClThlq1alG1alW8vb2Ji4vjwoULbN26ld27d+NwOFzntm/fnn//+9+0b98+Nz6KpGD58uWMGDECgO+++44qVaqku1l84pyCxOGYIiLZ6ZNPPmHu3LkUL16ckSNHEhERQWhoaJ7c86tGjRoEBgZy+fJlAC5evMi4ceMYN24cfn5+VK9endq1a1OiRAni4uKIjY3l8OHDbN68mbNnz7quU6RIER577DFeeeUVihYtmlsfJ9/YunWra6G2r776iurVq1O9evU0z0lc2Kt58+Y5Hp+IuyiZywHWWh555BFOnTpFhw4deOSRR9iwYQNFixZNdXx+blq8eDH/+9//MMbw/vvvU6NGDRYtWsTy5cvZuHEjJ06c4MSJEyxcuDDZud7e3jRs2JB+/foxYMCAdJMEca9z584xYMAA4uPjefnll+nWrVuGzluxYgWgOQUikv02b97M8OHDAfjmm29cxzM6X86drLUMGTKEy5cv07hxY0aNGsXevXtZtmwZq1at4tChQ2zbto1t27aleH6xYsXo0KEDDz74ID179tTKwNnk8uXL3HfffURHR/Poo49meEGapUuXAuiGs+QrSuZywNtvv82sWbMIDg7m+++/58yZM0De7KgiIyN56KGHALj33nvp0qULtWvXJjQ0lA4dOhAfH4+/vz9xcXEcOXIEYww+Pj74+/tTt25dLVufhzkcDgYPHsyRI0do0aIFI0eOzNB5Fy5cYMeOHQB07do1J0MUkZvMqVOnuPfee4mJieGxxx6jR48e/Pnnn3h5eaW5um5u+eabb5g5cyaBgYE89dRTtGnThsaNG1OtWjUGDBiAw+GgUKFCnDhxggsXLuDj44OPjw8lS5akcePGlC1bNk8+bfRk1lqeeeYZdu7cSa1atRg9enSGzouLi2Pt2rUAGb6xKeIJlMxlI2uT7hkzduxYypUrx86dO4G8mcwNGzaMI0eOULNmTe677z7KlClDgQIFaN68OQcOHGDHjh3ExsZSrFgxunTposTNQ1href7555k2bRqFCxdm4sSJrlXc0rNgwQIASpQokSeHBYuIZzp+/DidOnViz5491K9fnw8//JCwsDCstYSEhOS5PdT27dvHs88+C8Djjz9OtWrVKFiwIAULFqRDhw6sX7+eiIgIrly5Qps2bTQyxU1GjhzJ2LFj8fPzY9KkSRQsWDBD561Zs4bY2FgKFSpEjRo1cjhKEffxyu0A8gtrLW+88QYjRozAy8uLCRMmcPfddxMZGUl0dDQBAQGp7rGWWz788EO+//57AgICePbZZ5PNnatSpQq33HIL/v7+REREsHjxYsLDw3MxYsmot956i9GjR+Pj48O///1vypQpk+FzV61aBcCAAQNyKjwRuckcOXKEDh06sGfPHho2bMiCBQsIDAzk9OnTQN672RkREUGfPn2Iioqie/furq2CEvn7+9O6dWuqVq2KtZbt27ezdu1aYmNjczHq/O+TTz7hzTffxBjDiBEjqFq1aobPTRxiedddd+Ht7Z1TIYq4nZK5bGCtZfjw4bz99tt4e3vz448/8uCDDwLk2Y5qwoQJvPDCC0DCF/+yZctSqlSpZMNBEsf7lyhRgpiYGFatWsXu3bsTlkKVPOnjjz92PR1+4oknmDp1KhMnTszQudZapk+fDkDv3r1zMkwRuUkcOnSIDh06sH//fpo0acLChQspUaIEDoeDsLAwIG/1kVFRUfTq1YsdO3ZQp04dBg8ejDEm2U0xLy8v6tSpQ/PmzSlQoACnTp1iyZIlREZG5lLk+dv48eN55plngIQnpXPmzOHrr7/O8Pnq2yS/UjKXRbGxsTz99NO89957+Pj4MGnSJPr37+8qP3XqFJByR2WtZfLkyYwePZoLFy64Lebff/+dRx55BEj44t+0aVOAVJ/e+Pr60rJlS9cmqXv2/F97dx4f070/fvz1kUUkYonYkqBKVCupLVVaFI3ail5Lq1VFra2lLV0Ut7R1L7poe92fe6XUdV1r1bfFlwp6bVVSItTaJPZQQWwJWef9+2Mm841dIjOT4f18POaRmXM+c857zkzmPe9zPud8fmfr1q1kZGQ4J2B1x77++mveeustAN544w2aNGlCo0aNaNCgwR09f9euXcTHx1O+fHk9QVwpddf27t1L8+bNOXz4MI0aNWLt2rUEBAQA1qNf2dnZ+Pv74+vre91zz58/z/jx41m3bp3T4s3KyqJbt25s2bKFqlWrMnfuXIoXL06pUqVu2p2vUqVKNGvWjNKlS3P58mU2bdrEkSNHnBbz/WDRokX23y0DBgygRYsWRERE0KRJkzt6/tGjR9m6dSu+vr60b9/ekaEq5XRFq4O6m9mzZw+vvPIKsbGxeHl5sXjx4qv2+KSnp3Px4kU8PDwIDAwkOzubU6dOsX79eqKjo4mOjubkyZOULFkSHx8fBg0a5PCY58+fT58+fcjJyWH06NG8+uqrrFu3Di8vr6u6WF7LGEOtWrUICAggNjaW06dPs27dOurUqUNISIjD41a3JiKMHz+ejz76CID+/fvTqlUrgoOD6dq1K97e3ne0nG+//RaALl26FLnzV5RS7sNisfDll18yevRoMjIyeOKJJ1ixYgWlS5e2t7m250paWhp79+5l9erVREdHs3HjRiwWC0uWLGHz5s2ULFnSoTFfuHCB559/nujoaAIDA1m9erV9OILbdVX38/OjadOm7N69myNHjrBr1y6SkpKIiIi44+9fdT0R4csvv7QPQfDCCy/QsWNHKlasSKdOne74PP7FixcD0KFDhxvuOFDKreV3YDpH3NxtQNTs7Gz57LPPpHjx4gJItWrVZP369de1W79+vbzwwguybNkyycjIkIoVK1418GjuzdPTU2JjYx0as8VisQ8cDcgbb7whFotFDhw4IEuXLpW4uLg7XtaVK1dk06ZNMnLkSHnmmWd0cHAXy8jIkJdfflkAMcbI4MGD5ccff7ztgO/XslgsUqtWLQFkzZo1DopWqYINino/39wtRx48eFCaN29uzzd9+/aVS5cuXdfunXfekSFDhsjZs2flww8/tOfUa29PPvmkw2M+cuSIhIWFCSDly5eXbdu2SU5OjqxcuVKWLl16w/hv5tixY/Ltt99KmzZtZNSoUZKdne3AyO9d2dnZMnToUPvnoFevXrJixQo5duxYvpfVuHFjAWTRokUOiFSpwlOQ/Ki73vMpMTGRvn372k+k7devH1OmTLnhxU1Onz5NSkqKfW/ipUuXAGjSpAl/+tOfmDRpEikpKQwbNoz69es7LOa0tDRef/11/v3vf2OM4csvv2T48OEAnDhxAuCqE7tvx8fHhyeeeIJjx45x5cqVfF1cQxWuc+fO0blzZzZu3Ejx4sV577336NSpE+Hh4fneG/zbb7/x+++/ExgYyFNPPeWgiJVS9yqLxcI333zDW2+9RWpqKhUrViQqKuqG5yilp6eTnJyMxWKhbNmypKenk5GRgY+Pj324nKioKEqUKMHChQsdGvfmzZvp2rUrf/zxB7Vr12bFihVUr16d5ORksrKy8Pf3z9dRwZCQEFq2bMnGjRsJCwvTi20UQFpaGs8//zwrVqzA09OTN998k27dulG3bt18X1X72LFjbNmyhRIlSmgX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\n",
"text/plain": [
"<Figure size 1080x576 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(15,8), sharex=True, sharey=True)\n",
"\n",
"def do_a_sequence(sequence, column=0):\n",
" metrics = { g: get_glyph_metrics(f,g) for g in sequence }\n",
" glyphs = [ f[g] for g in sequence ]\n",
" sequence_glyphs = [ get_beziers(f, g) for g in sequence ]\n",
"\n",
" word_tail = sequence[2:]\n",
" initial = sequence[1]\n",
" end_of_previous_word = sequence[0]\n",
" word_tail_rise = sum(metrics[g][\"rise\"] for g in word_tail)\n",
"\n",
" advance_so_far = 0\n",
" rise_so_far = 0\n",
" prev_entry = None\n",
" for name, g in reversed(list(zip(sequence,sequence_glyphs))):\n",
" for p in g:\n",
" p.translate(Point(advance_so_far, rise_so_far))\n",
" this_exit = get_anchor(name, \"exit\")\n",
" if prev_entry and this_exit:\n",
" p.translate(Point(0, prev_entry.y-this_exit.y))\n",
" p.closed = True\n",
" advance_so_far += metrics[name][\"run\"]\n",
" prev_entry = get_anchor(name, \"entry\")\n",
"\n",
" for g in sequence_glyphs[0:2]:\n",
" for p in g:\n",
" p.clone().plot(ax[column][0])\n",
" ax[column][0].set(aspect='equal')\n",
"\n",
" kern = determine_kern(f, initial, end_of_previous_word, 200, (0,word_tail_rise),(0,0), 0.5)\n",
" print(sequence, kern)\n",
" for p in sequence_glyphs[0]:\n",
" p.translate(Point(kern,0))\n",
" for g in sequence_glyphs[0:2]:\n",
" for p in g:\n",
" p.clone().plot(ax[column][1])\n",
" ax[column][1].set(aspect='equal')\n",
"\n",
"\n",
"do_a_sequence([\"REu1\", \"SINi2\", \"LAMf1\"], 0)\n",
"do_a_sequence([\"REu1\", \"SINi1\", \"ALIFf1\"], 1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment