freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Git][freetype/freetype-web][master] 2 commits: docs/glyphs/glyph-metric


From: Werner Lemberg (@wl)
Subject: [Git][freetype/freetype-web][master] 2 commits: docs/glyphs/glyph-metrics.tex: Formatting.
Date: Fri, 07 Oct 2022 14:50:15 +0000

Werner Lemberg pushed to branch master at FreeType / FreeType Website

Commits:

  • 2e86c41f
    by Werner Lemberg at 2022-10-07T16:20:43+02:00
    docs/glyphs/glyph-metrics.tex: Formatting.
    
  • ea43d8c6
    by Werner Lemberg at 2022-10-07T16:49:21+02:00
    docs/glyphs/glyphs-6.html: Replace PNG with SVG images.
    

15 changed files:

Changes:

  • freetype2/docs/glyphs/bbox1.png deleted
    No preview for this file type
  • freetype2/docs/glyphs/bbox2.png deleted
    No preview for this file type
  • freetype2/docs/glyphs/glyph-metrics.tex
    ... ... @@ -24,104 +24,127 @@
    24 24
     
    
    25 25
     \usepackage{libertinus}
    
    26 26
     
    
    27
    -\usetikzlibrary{calc}
    
    28
    -\usetikzlibrary{decorations}
    
    29
    -\usetikzlibrary{positioning}
    
    27
    +\usetikzlibrary{
    
    28
    +  calc,
    
    29
    +  decorations,
    
    30
    +  positioning}
    
    30 31
     
    
    31 32
     
    
    32
    -% A dimensionless point node.
    
    33
    -\tikzset{dummy/.style={inner sep=0pt,
    
    34
    -                       outer sep=0pt}}
    
    35
    -
    
    36
    -% Thick line with one arrow.
    
    37
    -\tikzset{axis/.style={line width=4pt,
    
    38
    -                      -latex}}
    
    39
    -
    
    40
    -% A fat dot.
    
    41
    -\tikzset{dot/.style={minimum size=14pt,
    
    42
    -                     circle,
    
    43
    -                     fill}}
    
    44
    -
    
    45
    -% 'Elastic dashes' adapt spaces between dashes to the line length so that
    
    46
    -% the last dash doesn't get cut off.
    
    47
    -%
    
    48
    -% Taken from
    
    49
    -% https://tex.stackexchange.com/questions/133271/can-tikz-dashed-lines-emulate-pstricks-dashed-lines
    
    33
    +% Node styles.
    
    50 34
     \tikzset{
    
    35
    +  % For dimensionless point nodes.
    
    36
    +  dummy/.style={
    
    37
    +    inner sep=0pt,
    
    38
    +    outer sep=0pt},
    
    39
    +%
    
    40
    +  % For thick curves with one arrow.
    
    41
    +  axis/.style={
    
    42
    +    line width=4pt,
    
    43
    +    -latex},
    
    44
    +%
    
    45
    +  % For fat dots.
    
    46
    +  dot/.style={
    
    47
    +    minimum size=14pt,
    
    48
    +    circle,
    
    49
    +    fill},
    
    50
    +%
    
    51
    +  % 'Elastic dashes' adapt spaces between dashes to the line length so that
    
    52
    +  % the last dash doesn't get cut off partially.
    
    53
    +  %
    
    54
    +  % Taken from
    
    55
    +  % https://tex.stackexchange.com/questions/133271/can-tikz-dashed-lines-emulate-pstricks-dashed-lines
    
    51 56
       elastic dash/.code args={on #1 off #2}{
    
    52 57
         % Use csname so catcode of @ doesn't have do be changed.
    
    53 58
         \csname tikz@addoption\endcsname{%
    
    54
    -      \pgfgetpath\currentpath%
    
    59
    +      \pgfgetpath\currentpath
    
    55 60
           \pgfprocessround{\currentpath}{\currentpath}%
    
    56 61
           \csname pgf@decorate@parsesoftpath\endcsname
    
    57 62
             {\currentpath}{\currentpath}%
    
    58 63
           \pgfmathparse{\csname pgf@decorate@totalpathlength\endcsname-#1}%
    
    59
    -      \let\rest=\pgfmathresult%
    
    64
    +      \let\rest=\pgfmathresult
    
    60 65
           \pgfmathparse{#1+#2}%
    
    61 66
           \let\onoff=\pgfmathresult
    
    62 67
           \pgfmathparse{max(floor(\rest/\onoff), 1)}%
    
    63 68
           \let\nfullonoff=\pgfmathresult
    
    64 69
           \pgfmathparse{max((\rest-\onoff*\nfullonoff)/\nfullonoff+#2, #2)}%
    
    65 70
           \let\offexpand=\pgfmathresult
    
    66
    -      \pgfsetdash{{#1}{\offexpand}}{0pt}%
    
    67
    -    }
    
    68
    -  }
    
    69
    -}
    
    70
    -\tikzset{line/.style={line width=2pt}}
    
    71
    -\tikzset{dashed line/.style={elastic dash=on 6pt off 6pt,
    
    72
    -                             line}}
    
    73
    -
    
    74
    -\tikzset{coordinate/.style={font=\Huge}}
    
    75
    -\tikzset{description/.style={font=\Huge\itshape}}
    
    76
    -
    
    77
    -% Line with one arrow.
    
    78
    -\tikzset{direction/.style={line,
    
    79
    -                           -latex}}
    
    80
    -% Line with two arrows.
    
    81
    -\tikzset{span/.style={line,
    
    82
    -                      latex-latex}}
    
    83
    -
    
    84
    -% (Invisible) boxes for displaying horizontal and vertical advances.
    
    85
    -\tikzset{box/.style={inner sep=0pt,
    
    86
    -                     font=\fontsize{150pt}{0pt}\selectfont}}
    
    87
    -\tikzset{hbox/.style={box,
    
    88
    -                      outer sep=0pt,
    
    89
    -                      anchor=base west}}
    
    90
    -\tikzset{vbox/.style={box,
    
    91
    -                      outer sep=10pt,
    
    92
    -                      anchor=north}}
    
    93
    -
    
    94
    -% We want a bbox around the ink of glyph 'g', which needs some manual work.
    
    95
    -% We use `inner xsep` with a negative value to remove the glyph's side
    
    96
    -% bearings.  Since the left and the right side bearings are not equal, we
    
    97
    -% need `\hspace` as an additional compensation.  For the top and bottom side
    
    98
    -% bearings, adjusting `inner ysep` is sufficient.
    
    99
    -\tikzset{glyph g/.style={draw,
    
    100
    -                         line,
    
    101
    -                         inner xsep=-6pt,
    
    102
    -                         inner ysep=0pt,
    
    103
    -                         outer sep=0pt,
    
    104
    -                         font=\fontsize{300pt}{0pt}\selectfont,
    
    105
    -                         execute at end node={\hspace{-3pt}g}}}
    
    106
    -
    
    107
    -% A filled square.
    
    71
    +      \pgfsetdash{{#1}{\offexpand}}{0pt}}},
    
    72
    +%
    
    73
    +  % For main curves.
    
    74
    +  line/.style={
    
    75
    +    line width=2pt},
    
    108 76
     %
    
    109
    -% Taken from
    
    110
    -% https://tex.stackexchange.com/questions/300098/draw-a-node-as-a-square-with-tikz
    
    111
    -\tikzset{square/.style={draw=none,
    
    112
    -                        circle,
    
    113
    -                        minimum size=9pt,
    
    114
    -                        inner sep=0pt,
    
    115
    -                        outer sep=0pt,
    
    116
    -                        append after command={%
    
    117
    -                          \pgfextra
    
    118
    -                            \fill[black]
    
    119
    -                               (\tikzlastnode.north
    
    120
    -                                -| \tikzlastnode.west)
    
    121
    -                               rectangle
    
    122
    -                               (\tikzlastnode.south
    
    123
    -                                -| \tikzlastnode.east);
    
    124
    -                          \endpgfextra}}}
    
    77
    +  % For auxiliary, dashed curves.
    
    78
    +  dashed line/.style={
    
    79
    +    elastic dash=on 6pt off 6pt,
    
    80
    +    line},
    
    81
    +%
    
    82
    +  % For displaying node coordinates.
    
    83
    +  coordinate/.style={
    
    84
    +    font=\Huge},
    
    85
    +%
    
    86
    +  % For explanations.
    
    87
    +  description/.style={
    
    88
    +    font=\Huge\itshape},
    
    89
    +%
    
    90
    +  % For curves with one arrow.
    
    91
    +  direction/.style={
    
    92
    +    line,
    
    93
    +    -latex},
    
    94
    +  % For curves with two arrows.
    
    95
    +  span/.style={
    
    96
    +    line,
    
    97
    +    latex-latex},
    
    98
    +%
    
    99
    +  % For (invisible) boxes displaying advances.
    
    100
    +  box/.style={
    
    101
    +    inner sep=0pt,
    
    102
    +    font=\fontsize{150pt}{0pt}\selectfont},
    
    103
    +%
    
    104
    +  % For displaying horizontal advances.
    
    105
    +  hbox/.style={
    
    106
    +    box,
    
    107
    +    outer sep=0pt,
    
    108
    +    anchor=base west},
    
    109
    +%
    
    110
    +  % For displaying vertical advances.
    
    111
    +  vbox/.style={
    
    112
    +    box,
    
    113
    +    outer sep=10pt,
    
    114
    +    anchor=north},
    
    115
    +%
    
    116
    +  % We want a bbox around the ink of glyph 'g', which needs some manual
    
    117
    +  % work.  We use `inner xsep` with a negative value to remove the glyph's
    
    118
    +  % side bearings.  Since the left and the right side bearings are not
    
    119
    +  % equal, we need `\hspace` as an additional compensation.  For the top and
    
    120
    +  % bottom side bearings, adjusting `inner ysep` is sufficient.
    
    121
    +  glyph g/.style={
    
    122
    +    draw,
    
    123
    +    line,
    
    124
    +    inner xsep=-6pt,
    
    125
    +    inner ysep=0pt,
    
    126
    +    outer sep=0pt,
    
    127
    +    font=\fontsize{300pt}{0pt}\selectfont,
    
    128
    +    execute at end node={\hspace{-3pt}g}},
    
    129
    +%
    
    130
    +  % For filled squares
    
    131
    +  %
    
    132
    +  % Taken from
    
    133
    +  % https://tex.stackexchange.com/questions/300098/draw-a-node-as-a-square-with-tikz
    
    134
    +  square/.style={
    
    135
    +    draw=none,
    
    136
    +    circle,
    
    137
    +    minimum size=9pt,
    
    138
    +    inner sep=0pt,
    
    139
    +    outer sep=0pt,
    
    140
    +    append after command={%
    
    141
    +      \pgfextra
    
    142
    +        \fill[black] (\tikzlastnode.north -| \tikzlastnode.west)
    
    143
    +                     rectangle
    
    144
    +                     (\tikzlastnode.south -| \tikzlastnode.east);
    
    145
    +      \endpgfextra}}
    
    146
    +}
    
    147
    +
    
    125 148
     
    
    126 149
     \newcommand*{\LastLoopValue}{No value}
    
    127 150
     
    
    ... ... @@ -231,7 +254,7 @@
    231 254
       \draw[dashed line] (glyph.south east) -- (yMin);
    
    232 255
     
    
    233 256
       \draw[direction] ($(glyph.base east) + (1,0)$)
    
    234
    -                      -- ($(glyph.north east) + (1,0)$)
    
    257
    +                     -- ($(glyph.north east) + (1,0)$)
    
    235 258
                        node [midway, right, description] {bearingY};
    
    236 259
       \draw[span] ($(glyph.south east) + (5,0)$)
    
    237 260
                     -- ($(glyph.north east) + (5,0)$)
    

  • freetype2/docs/glyphs/glyphs-6.html
    ... ... @@ -120,6 +120,13 @@
    120 120
                 <li>
    
    121 121
                   <p>Two successive &lsquo;on&rsquo; points indicate a
    
    122 122
                     line segment joining them.</p>
    
    123
    +
    
    124
    +              <p align="center">
    
    125
    +                <img src="">"outlines-1.svg"
    
    126
    +                     height="40%"
    
    127
    +                     width="40%"
    
    128
    +                     alt="segment example">
    
    129
    +              </p>
    
    123 130
                 </li>
    
    124 131
                 <li>
    
    125 132
                   <p>One conic &lsquo;off&rsquo; point between two
    
    ... ... @@ -127,6 +134,13 @@
    127 134
                     B&eacute;zier arc, the &lsquo;off&rsquo; point being
    
    128 135
                     the control point, and the &lsquo;on&rsquo; ones the
    
    129 136
                     start and end points.</p>
    
    137
    +
    
    138
    +              <p align="center">
    
    139
    +                <img src="">"outlines-2.svg"
    
    140
    +                     height="40%"
    
    141
    +                     width="40%"
    
    142
    +                     alt="conic arc example">
    
    143
    +              </p>
    
    130 144
                 </li>
    
    131 145
                 <li>
    
    132 146
                   <p>Two successive cubic &lsquo;off&rsquo; points between
    
    ... ... @@ -136,6 +150,13 @@
    136 150
                     each cubic arc (using a single cubic &lsquo;off&rsquo;
    
    137 151
                     point between two &lsquo;on&rsquo; points is
    
    138 152
                     forbidden, for example).</p>
    
    153
    +
    
    154
    +              <p align="center">
    
    155
    +                <img src="">"outlines-3.svg"
    
    156
    +                     height="40%"
    
    157
    +                     width="40%"
    
    158
    +                     alt="cubic arc example">
    
    159
    +              </p>
    
    139 160
                 </li>
    
    140 161
                 <li>
    
    141 162
                   <p>Two successive conic &lsquo;off&rsquo; points force
    
    ... ... @@ -146,6 +167,13 @@
    146 167
                     successive conic B&eacute;zier arcs.  Moreover, it is
    
    147 168
                     the way outlines are described in the TrueType
    
    148 169
                     specification.</p>
    
    170
    +
    
    171
    +              <p align="center">
    
    172
    +                <img src="">"outlines-4.svg"
    
    173
    +                     height="40%"
    
    174
    +                     width="40%"
    
    175
    +                     alt="cubic arc with virtual 'on' point">
    
    176
    +              </p>
    
    149 177
                 </li>
    
    150 178
                 <li>
    
    151 179
                   <p>The last point in a contour uses the first as an end
    
    ... ... @@ -172,37 +200,6 @@
    172 200
                 single contour, however, no font driver of FreeType
    
    173 201
                 produces such outlines currently.</p>
    
    174 202
     
    
    175
    -          <table class="vertical-space">
    
    176
    -            <tr>
    
    177
    -              <td>
    
    178
    -                <img src="">"points_segment.png"
    
    179
    -                     height="166"
    
    180
    -                     width="221"
    
    181
    -                     alt="segment example">
    
    182
    -              </td>
    
    183
    -              <td>
    
    184
    -                <img src="">"points_conic.png"
    
    185
    -                     height="183"
    
    186
    -                     width="236"
    
    187
    -                     alt="conic arc example">
    
    188
    -              </td>
    
    189
    -            </tr>
    
    190
    -            <tr>
    
    191
    -              <td>
    
    192
    -                <img src="">"points_cubic.png"
    
    193
    -                     height="162"
    
    194
    -                     width="214"
    
    195
    -                     alt="cubic arc example">
    
    196
    -              </td>
    
    197
    -              <td>
    
    198
    -                <img src="">"points_conic2.png"
    
    199
    -                     height="204"
    
    200
    -                     width="225"
    
    201
    -                     alt="cubic arc with virtual 'on' point">
    
    202
    -              </td>
    
    203
    -            </tr>
    
    204
    -          </table>
    
    205
    -
    
    206 203
     
    
    207 204
               <h4>b. The <code>FT_Outline</code> descriptor</h4>
    
    208 205
     
    
    ... ... @@ -312,24 +309,27 @@
    312 309
                 the bbox, and the two boxes are identical in most
    
    313 310
                 cases.</p>
    
    314 311
     
    
    315
    -          <p>Unlike the bbox, the cbox is much faster to compute.</p>
    
    312
    +          <p>Unlike the bbox, the cbox can be computed very
    
    313
    +            quickly.</p>
    
    316 314
     
    
    317
    -          <table class="vertical-space">
    
    318
    -            <tr>
    
    319
    -              <td>
    
    320
    -                <img src="">"bbox1.png"
    
    321
    -                     height="264"
    
    322
    -                     width="228"
    
    323
    -                     alt="a glyph with different bbox and cbox">
    
    324
    -              </td>
    
    325
    -              <td>
    
    326
    -                <img src="">"bbox2.png"
    
    327
    -                     height="229"
    
    328
    -                     width="217"
    
    329
    -                     alt="a glyph with identical bbox and cbox">
    
    330
    -              </td>
    
    331
    -            </tr>
    
    332
    -          </table>
    
    315
    +          <p>The following image shows B&eacute;zier curves where the
    
    316
    +            bbox and the cbox differ.</p>
    
    317
    +
    
    318
    +          <p align="center">
    
    319
    +            <img src="">"outlines-5.svg"
    
    320
    +                 height="40%"
    
    321
    +                 width="40%"
    
    322
    +                 alt="a glyph with different bbox and cbox">
    
    323
    +          </p>
    
    324
    +
    
    325
    +          <p>Adding points at the curve extrema avoids that.</p>
    
    326
    +
    
    327
    +          <p align="center">
    
    328
    +            <img src="">"outlines-6.svg"
    
    329
    +                 height="40%"
    
    330
    +                 width="40%"
    
    331
    +                 alt="a glyph with identical bbox and cbox">
    
    332
    +          </p>
    
    333 333
     
    
    334 334
               <p>Control and bounding boxes can be computed automatically
    
    335 335
                 using the
    
    ... ... @@ -434,7 +434,7 @@ height = (ymax - ymin)/64</pre>
    434 434
             <!-- ************************************************** -->
    
    435 435
     
    
    436 436
             <div class="updated">
    
    437
    -          <p>Last update: 15-Jan-2021</p>
    
    437
    +          <p>Last update: 07-Oct-2022</p>
    
    438 438
             </div>
    
    439 439
           </div>
    
    440 440
         </div>
    

  • freetype2/docs/glyphs/outlines-1.svg
    1
    +<?xml version="1.0" encoding="UTF-8"?>
    
    2
    +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="193.06pt" height="79.68pt" viewBox="0 0 193.06 79.68" version="1.1">
    
    3
    +<defs>
    
    4
    +<clipPath id="clip1">
    
    5
    +  <path d="M 0 0 L 193.058594 0 L 193.058594 79.679688 L 0 79.679688 Z M 0 0 "/>
    
    6
    +</clipPath>
    
    7
    +</defs>
    
    8
    +<g id="surface1">
    
    9
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 8.503906 71.175781 L 14.480469 71.175781 L 14.480469 65.199219 L 8.503906 65.199219 Z M 8.503906 71.175781 "/>
    
    10
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 178.585938 14.484375 L 184.5625 14.484375 L 184.5625 8.503906 L 178.585938 8.503906 Z M 178.585938 14.484375 "/>
    
    11
    +<g clip-path="url(#clip1)" clip-rule="nonzero">
    
    12
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0008125 0.0005 L 170.081219 56.691906 " transform="matrix(1,0,0,-1,11.493,68.188)"/>
    
    13
    +</g>
    
    14
    +</g>
    
    15
    +</svg>

  • freetype2/docs/glyphs/outlines-2.svg
    1
    +<?xml version="1.0" encoding="UTF-8"?>
    
    2
    +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="193.06pt" height="108.52pt" viewBox="0 0 193.06 108.52" version="1.1">
    
    3
    +<defs>
    
    4
    +<clipPath id="clip1">
    
    5
    +  <path d="M 0 0 L 81 0 L 81 108.519531 L 0 108.519531 Z M 0 0 "/>
    
    6
    +</clipPath>
    
    7
    +<clipPath id="clip2">
    
    8
    +  <path d="M 0 5 L 193.058594 5 L 193.058594 108.519531 L 0 108.519531 Z M 0 5 "/>
    
    9
    +</clipPath>
    
    10
    +</defs>
    
    11
    +<g id="surface1">
    
    12
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 8.503906 100.015625 L 14.480469 100.015625 L 14.480469 94.039062 L 8.503906 94.039062 Z M 8.503906 100.015625 "/>
    
    13
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 59.682781 85.038719 C 59.682781 86.691062 58.342937 88.030906 56.6945 88.030906 C 55.042156 88.030906 53.706219 86.691062 53.706219 85.038719 C 53.706219 83.390281 55.042156 82.050437 56.6945 82.050437 C 58.342937 82.050437 59.682781 83.390281 59.682781 85.038719 Z M 59.682781 85.038719 " transform="matrix(1,0,0,-1,11.493,97.027)"/>
    
    14
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 178.585938 43.320312 L 184.5625 43.320312 L 184.5625 37.34375 L 178.585938 37.34375 Z M 178.585938 43.320312 "/>
    
    15
    +<g clip-path="url(#clip1)" clip-rule="nonzero">
    
    16
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,6.72818;stroke-miterlimit:10;" d="M 1.991375 2.987937 L 54.760906 82.140281 " transform="matrix(1,0,0,-1,11.493,97.027)"/>
    
    17
    +</g>
    
    18
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,7.06342;stroke-miterlimit:10;" d="M 60.077312 84.194969 L 167.092938 57.441062 " transform="matrix(1,0,0,-1,11.493,97.027)"/>
    
    19
    +<g clip-path="url(#clip2)" clip-rule="nonzero">
    
    20
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0008125 -0.00034375 C 37.796062 56.694969 94.487469 75.593406 170.081219 56.694969 " transform="matrix(1,0,0,-1,11.493,97.027)"/>
    
    21
    +</g>
    
    22
    +</g>
    
    23
    +</svg>

  • freetype2/docs/glyphs/outlines-3.svg
    1
    +<?xml version="1.0" encoding="UTF-8"?>
    
    2
    +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="193.06pt" height="108.52pt" viewBox="0 0 193.06 108.52" version="1.1">
    
    3
    +<defs>
    
    4
    +<clipPath id="clip1">
    
    5
    +  <path d="M 0 29 L 53 29 L 53 108.519531 L 0 108.519531 Z M 0 29 "/>
    
    6
    +</clipPath>
    
    7
    +<clipPath id="clip2">
    
    8
    +  <path d="M 0 1 L 193.058594 1 L 193.058594 108.519531 L 0 108.519531 Z M 0 1 "/>
    
    9
    +</clipPath>
    
    10
    +</defs>
    
    11
    +<g id="surface1">
    
    12
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 8.503906 100.015625 L 14.480469 100.015625 L 14.480469 94.039062 L 8.503906 94.039062 Z M 8.503906 100.015625 "/>
    
    13
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.335125 56.694969 C 31.335125 58.343406 29.999187 59.68325 28.346844 59.68325 C 26.6945 59.68325 25.358562 58.343406 25.358562 56.694969 C 25.358562 55.042625 26.6945 53.706687 28.346844 53.706687 C 29.999187 53.706687 31.335125 55.042625 31.335125 56.694969 Z M 31.335125 56.694969 " transform="matrix(1,0,0,-1,11.493,97.027)"/>
    
    14
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 116.374188 85.038719 C 116.374188 86.691062 115.03825 88.030906 113.385906 88.030906 C 111.737469 88.030906 110.397625 86.691062 110.397625 85.038719 C 110.397625 83.390281 111.737469 82.050437 113.385906 82.050437 C 115.03825 82.050437 116.374188 83.390281 116.374188 85.038719 Z M 116.374188 85.038719 " transform="matrix(1,0,0,-1,11.493,97.027)"/>
    
    15
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 178.585938 43.320312 L 184.5625 43.320312 L 184.5625 37.34375 L 178.585938 37.34375 Z M 178.585938 43.320312 "/>
    
    16
    +<g clip-path="url(#clip1)" clip-rule="nonzero">
    
    17
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,6.65242;stroke-miterlimit:10;" d="M 1.495281 2.987937 L 26.78825 53.573875 " transform="matrix(1,0,0,-1,11.493,97.027)"/>
    
    18
    +</g>
    
    19
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,6.80266;stroke-miterlimit:10;" d="M 31.655437 57.796531 L 110.081219 83.937156 " transform="matrix(1,0,0,-1,11.493,97.027)"/>
    
    20
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,6.65239;stroke-miterlimit:10;" d="M 116.507 83.480125 L 167.092938 58.187156 " transform="matrix(1,0,0,-1,11.493,97.027)"/>
    
    21
    +<g clip-path="url(#clip2)" clip-rule="nonzero">
    
    22
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0008125 -0.00034375 C 28.346844 56.694969 113.385906 85.038719 170.081219 56.694969 " transform="matrix(1,0,0,-1,11.493,97.027)"/>
    
    23
    +</g>
    
    24
    +</g>
    
    25
    +</svg>

  • freetype2/docs/glyphs/outlines-4.svg
    1
    +<?xml version="1.0" encoding="UTF-8"?>
    
    2
    +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="193.06pt" height="80.67pt" viewBox="0 0 193.06 80.67" version="1.1">
    
    3
    +<defs>
    
    4
    +<clipPath id="clip1">
    
    5
    +  <path d="M 136 51 L 171 51 L 171 80.671875 L 136 80.671875 Z M 136 51 "/>
    
    6
    +</clipPath>
    
    7
    +<clipPath id="clip2">
    
    8
    +  <path d="M 82 26 L 165 26 L 165 80.671875 L 82 80.671875 Z M 82 26 "/>
    
    9
    +</clipPath>
    
    10
    +<clipPath id="clip3">
    
    11
    +  <path d="M 140 0 L 193.058594 0 L 193.058594 80 L 140 80 Z M 140 0 "/>
    
    12
    +</clipPath>
    
    13
    +<clipPath id="clip4">
    
    14
    +  <path d="M 0 2 L 125 2 L 125 80.671875 L 0 80.671875 Z M 0 2 "/>
    
    15
    +</clipPath>
    
    16
    +<clipPath id="clip5">
    
    17
    +  <path d="M 68 0 L 193.058594 0 L 193.058594 78 L 68 78 Z M 68 0 "/>
    
    18
    +</clipPath>
    
    19
    +</defs>
    
    20
    +<g id="surface1">
    
    21
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 8.503906 71.667969 L 14.480469 71.667969 L 14.480469 65.691406 L 8.503906 65.691406 Z M 8.503906 71.667969 "/>
    
    22
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.335125 56.694625 C 31.335125 58.343062 29.999187 59.682906 28.346844 59.682906 C 26.6945 59.682906 25.358562 58.343062 25.358562 56.694625 C 25.358562 55.042281 26.6945 53.706344 28.346844 53.706344 C 29.999187 53.706344 31.335125 55.042281 31.335125 56.694625 Z M 31.335125 56.694625 " transform="matrix(1,0,0,-1,11.493,68.679)"/>
    
    23
    +<g clip-path="url(#clip1)" clip-rule="nonzero">
    
    24
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 144.721844 -0.0006875 C 144.721844 1.651656 143.385906 2.987594 141.733563 2.987594 C 140.085125 2.987594 138.745281 1.651656 138.745281 -0.0006875 C 138.745281 -1.649125 140.085125 -2.988969 141.733563 -2.988969 C 143.385906 -2.988969 144.721844 -1.649125 144.721844 -0.0006875 Z M 144.721844 -0.0006875 " transform="matrix(1,0,0,-1,11.493,68.679)"/>
    
    25
    +</g>
    
    26
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 178.585938 14.972656 L 184.5625 14.972656 L 184.5625 8.996094 L 178.585938 8.996094 Z M 178.585938 14.972656 "/>
    
    27
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,6.65242;stroke-miterlimit:10;" d="M 1.495281 2.987594 L 26.78825 53.573531 " transform="matrix(1,0,0,-1,11.493,68.679)"/>
    
    28
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,7.48592;stroke-miterlimit:10;" d="M 31.464031 55.136031 L 85.042156 28.346969 " transform="matrix(1,0,0,-1,11.493,68.679)"/>
    
    29
    +<g clip-path="url(#clip2)" clip-rule="nonzero">
    
    30
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,7.48593;stroke-miterlimit:10;" d="M 85.042156 28.346969 L 138.616375 1.557906 " transform="matrix(1,0,0,-1,11.493,68.679)"/>
    
    31
    +</g>
    
    32
    +<g clip-path="url(#clip3)" clip-rule="nonzero">
    
    33
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,6.65239;stroke-miterlimit:10;" d="M 143.292156 3.120406 L 168.589031 53.706344 " transform="matrix(1,0,0,-1,11.493,68.679)"/>
    
    34
    +</g>
    
    35
    +<g clip-path="url(#clip4)" clip-rule="nonzero">
    
    36
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0008125 -0.0006875 C 18.897625 37.796187 47.245281 47.245406 85.042156 28.346969 " transform="matrix(1,0,0,-1,11.493,68.679)"/>
    
    37
    +</g>
    
    38
    +<g clip-path="url(#clip5)" clip-rule="nonzero">
    
    39
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 85.042156 28.346969 C 122.835125 9.448531 151.182781 18.89775 170.081219 56.694625 " transform="matrix(1,0,0,-1,11.493,68.679)"/>
    
    40
    +</g>
    
    41
    +<path style="fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 82.049969 25.358687 L 88.030438 25.358687 L 88.030438 31.33525 L 82.049969 31.33525 Z M 82.049969 25.358687 " transform="matrix(1,0,0,-1,11.493,68.679)"/>
    
    42
    +</g>
    
    43
    +</svg>

  • freetype2/docs/glyphs/outlines-5.svg
    1
    +<?xml version="1.0" encoding="UTF-8"?>
    
    2
    +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="193.06pt" height="207.87pt" viewBox="0 0 193.06 207.87" version="1.1">
    
    3
    +<defs>
    
    4
    +<g>
    
    5
    +<symbol overflow="visible" id="glyph0-0">
    
    6
    +<path style="stroke:none;" d="M 0 0 L 7.171875 0 L 7.171875 -10.046875 L 0 -10.046875 Z M 1.140625 -0.71875 L 3.578125 -4.375 L 6.03125 -0.71875 Z M 0.71875 -8.671875 L 3.15625 -5.015625 L 0.71875 -1.359375 Z M 4.015625 -5.015625 L 6.453125 -8.671875 L 6.453125 -1.359375 Z M 3.578125 -5.671875 L 1.140625 -9.328125 L 6.03125 -9.328125 Z M 3.578125 -5.671875 "/>
    
    7
    +</symbol>
    
    8
    +<symbol overflow="visible" id="glyph0-1">
    
    9
    +<path style="stroke:none;" d="M 3 0.140625 C 4.03125 0.140625 4.96875 -0.609375 5.65625 -1.5625 C 5.609375 -1.703125 5.46875 -1.8125 5.328125 -1.8125 C 4.78125 -1.171875 4.203125 -0.703125 3.4375 -0.703125 C 3.203125 -0.703125 2.921875 -0.765625 2.71875 -1.03125 C 2.515625 -1.3125 2.359375 -1.59375 2.359375 -2.453125 C 2.359375 -4.59375 3.375 -5.859375 4.46875 -5.859375 C 4.671875 -5.859375 5.078125 -5.78125 5.078125 -5.3125 C 5.078125 -5.21875 5.046875 -5.109375 5 -5.03125 C 4.96875 -4.984375 4.9375 -4.8125 4.9375 -4.734375 C 4.9375 -4.5 5.078125 -4.28125 5.328125 -4.28125 C 5.703125 -4.28125 6.0625 -4.5625 6.0625 -4.921875 C 6.0625 -5.484375 6.03125 -6.296875 4.453125 -6.296875 C 3.890625 -6.296875 2.96875 -5.921875 2.359375 -5.296875 C 1.65625 -4.53125 1.1875 -3.421875 1.1875 -2.140625 C 1.1875 -1.65625 1.296875 -1.015625 1.625 -0.546875 C 1.921875 -0.125 2.40625 0.140625 3 0.140625 Z M 3 0.140625 "/>
    
    10
    +</symbol>
    
    11
    +<symbol overflow="visible" id="glyph0-2">
    
    12
    +<path style="stroke:none;" d="M 4.09375 -8.359375 C 4.296875 -9.296875 4.453125 -9.875 4.453125 -9.875 C 4.453125 -9.96875 4.40625 -10.015625 4.28125 -10.015625 C 3.890625 -9.875 2.859375 -9.6875 2.265625 -9.640625 L 2.21875 -9.296875 C 2.21875 -9.25 2.234375 -9.21875 2.296875 -9.21875 L 2.734375 -9.1875 C 2.921875 -9.1875 3.046875 -9.109375 3.046875 -8.796875 C 3.046875 -8.640625 3.015625 -8.390625 2.9375 -8.078125 L 1.46875 -1.515625 C 1.265625 -0.625 1.640625 0.140625 2.921875 0.140625 C 3.375 0.140625 3.9375 -0.046875 4.4375 -0.390625 C 5.734375 -1.296875 7.0625 -3.125 7.0625 -4.59375 C 7.0625 -5.5625 6.859375 -6.296875 5.546875 -6.296875 C 4.5625 -6.296875 3.828125 -5.390625 3.328125 -4.8125 L 3.296875 -4.8125 Z M 5.875 -4.3125 C 5.875 -2.234375 4.09375 -0.359375 3 -0.359375 C 2.484375 -0.359375 2.390625 -0.921875 2.625 -1.890625 L 3.109375 -3.953125 C 3.78125 -4.75 4.4375 -5.625 5.125 -5.625 C 5.546875 -5.625 5.875 -5.296875 5.875 -4.3125 Z M 5.875 -4.3125 "/>
    
    13
    +</symbol>
    
    14
    +<symbol overflow="visible" id="glyph0-3">
    
    15
    +<path style="stroke:none;" d="M 1.125 -2.328125 C 1.125 -1.5625 1.3125 0.140625 3.125 0.140625 C 3.578125 0.140625 4.03125 0.09375 4.453125 -0.125 C 5.6875 -0.765625 6.671875 -2.28125 6.671875 -3.96875 C 6.671875 -5 6.40625 -6.296875 4.640625 -6.296875 C 2.25 -6.296875 1.125 -4.046875 1.125 -2.328125 Z M 2.3125 -2.4375 C 2.3125 -3.734375 2.875 -5.828125 4.390625 -5.828125 C 4.8125 -5.828125 5.046875 -5.59375 5.265625 -5.1875 C 5.4375 -4.828125 5.484375 -4.296875 5.484375 -3.875 C 5.484375 -3.296875 5.390625 -2.0625 4.859375 -1.265625 C 4.453125 -0.640625 3.890625 -0.390625 3.34375 -0.390625 C 2.921875 -0.390625 2.3125 -0.9375 2.3125 -2.4375 Z M 2.3125 -2.4375 "/>
    
    16
    +</symbol>
    
    17
    +<symbol overflow="visible" id="glyph0-4">
    
    18
    +<path style="stroke:none;" d="M 3.078125 -4.4375 L 3.59375 -3.03125 L 2.25 -1.046875 C 2.109375 -0.828125 1.953125 -0.78125 1.84375 -0.78125 C 1.734375 -0.78125 1.578125 -0.796875 1.46875 -0.859375 C 1.328125 -0.921875 1.1875 -0.953125 1.046875 -0.953125 C 0.734375 -0.953125 0.5 -0.71875 0.5 -0.40625 C 0.5 -0.03125 1 0.140625 1.328125 0.140625 C 1.828125 0.140625 2.171875 -0.078125 2.796875 -0.96875 L 3.796875 -2.40625 L 4.34375 -0.65625 C 4.53125 -0.09375 4.671875 0.140625 5.15625 0.140625 C 5.671875 0.140625 6.296875 -0.125 6.734375 -0.875 C 6.6875 -1 6.5625 -1.125 6.390625 -1.140625 C 6.03125 -0.671875 5.84375 -0.5625 5.6875 -0.5625 C 5.546875 -0.5625 5.453125 -0.75 5.328125 -1.09375 L 4.5625 -3.40625 L 5.65625 -5 C 5.875 -5.328125 6.21875 -5.390625 6.328125 -5.390625 C 6.4375 -5.390625 6.625 -5.34375 6.75 -5.25 C 6.859375 -5.15625 7.078125 -5.109375 7.234375 -5.109375 C 7.4375 -5.109375 7.6875 -5.390625 7.6875 -5.71875 C 7.6875 -6.078125 7.296875 -6.296875 6.96875 -6.296875 C 6.25 -6.296875 5.78125 -6.046875 5.078125 -5.03125 L 4.359375 -4 L 3.953125 -5.265625 C 3.71875 -6.015625 3.5625 -6.296875 3.203125 -6.296875 C 2.875 -6.296875 1.8125 -5.703125 1.3125 -5.328125 C 1.3125 -5.171875 1.375 -5 1.484375 -4.890625 C 1.65625 -4.984375 2.140625 -5.203125 2.4375 -5.203125 C 2.625 -5.203125 2.765625 -5.15625 2.84375 -5.03125 C 2.890625 -4.921875 3 -4.6875 3.078125 -4.4375 Z M 3.078125 -4.4375 "/>
    
    19
    +</symbol>
    
    20
    +</g>
    
    21
    +<clipPath id="clip1">
    
    22
    +  <path d="M 79 178 L 114 178 L 114 207.871094 L 79 207.871094 Z M 79 178 "/>
    
    23
    +</clipPath>
    
    24
    +<clipPath id="clip2">
    
    25
    +  <path d="M 0 99 L 109 99 L 109 207.871094 L 0 207.871094 Z M 0 99 "/>
    
    26
    +</clipPath>
    
    27
    +<clipPath id="clip3">
    
    28
    +  <path d="M 84 99 L 193 99 L 193 207.871094 L 84 207.871094 Z M 84 99 "/>
    
    29
    +</clipPath>
    
    30
    +<clipPath id="clip4">
    
    31
    +  <path d="M 0 40 L 193.058594 40 L 193.058594 140 L 0 140 Z M 0 40 "/>
    
    32
    +</clipPath>
    
    33
    +<clipPath id="clip5">
    
    34
    +  <path d="M 0 82 L 193.058594 82 L 193.058594 182 L 0 182 Z M 0 82 "/>
    
    35
    +</clipPath>
    
    36
    +</defs>
    
    37
    +<g id="surface1">
    
    38
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 8.503906 113.828125 L 14.480469 113.828125 L 14.480469 107.851562 L 8.503906 107.851562 Z M 8.503906 113.828125 "/>
    
    39
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 88.030438 85.039219 C 88.030438 86.691563 86.690594 88.0275 85.042156 88.0275 C 83.389813 88.0275 82.049969 86.691563 82.049969 85.039219 C 82.049969 83.390781 83.389813 82.050938 85.042156 82.050938 C 86.690594 82.050938 88.030438 83.390781 88.030438 85.039219 Z M 88.030438 85.039219 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    40
    +<g clip-path="url(#clip1)" clip-rule="nonzero">
    
    41
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 88.030438 -85.038906 C 88.030438 -83.390469 86.690594 -82.050625 85.042156 -82.050625 C 83.389813 -82.050625 82.049969 -83.390469 82.049969 -85.038906 C 82.049969 -86.69125 83.389813 -88.031094 85.042156 -88.031094 C 86.690594 -88.031094 88.030438 -86.69125 88.030438 -85.038906 Z M 88.030438 -85.038906 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    42
    +</g>
    
    43
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 178.585938 113.828125 L 184.5625 113.828125 L 184.5625 107.851562 L 178.585938 107.851562 Z M 178.585938 113.828125 "/>
    
    44
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,7.33257;stroke-miterlimit:10;" d="M 2.987469 2.988438 L 82.573406 82.574375 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    45
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,7.33263;stroke-miterlimit:10;" d="M 87.507 82.574375 L 167.096844 2.988438 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    46
    +<g clip-path="url(#clip2)" clip-rule="nonzero">
    
    47
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,7.33257;stroke-miterlimit:10;" d="M 2.987469 -2.988125 L 82.573406 -82.574062 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    48
    +</g>
    
    49
    +<g clip-path="url(#clip3)" clip-rule="nonzero">
    
    50
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,7.33263;stroke-miterlimit:10;" d="M 87.507 -82.574062 L 167.096844 -2.988125 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    51
    +</g>
    
    52
    +<g clip-path="url(#clip4)" clip-rule="nonzero">
    
    53
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0008125 0.00015625 C 56.6945 56.695469 113.385906 56.695469 170.081219 0.00015625 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    54
    +</g>
    
    55
    +<g clip-path="url(#clip5)" clip-rule="nonzero">
    
    56
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0008125 0.00015625 C 56.6945 -56.695156 113.385906 -56.695156 170.081219 0.00015625 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    57
    +</g>
    
    58
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.09291;stroke-miterlimit:10;" d="M -0.0008125 2.988438 L -0.0008125 85.039219 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    59
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.05458;stroke-miterlimit:10;" d="M -0.0008125 85.039219 L 81.553875 85.039219 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    60
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.05458;stroke-miterlimit:10;" d="M 88.526531 85.039219 L 170.081219 85.039219 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    61
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    62
    +  <use xlink:href="">"#glyph0-1" x="152.409" y="21.837"/>
    
    63
    +  <use xlink:href="">"#glyph0-2" x="157.989672" y="21.837"/>
    
    64
    +</g>
    
    65
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    66
    +  <use xlink:href="">"#glyph0-3" x="164.976271" y="21.837"/>
    
    67
    +</g>
    
    68
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    69
    +  <use xlink:href="">"#glyph0-4" x="171.302945" y="21.837"/>
    
    70
    +</g>
    
    71
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.09291;stroke-miterlimit:10;" d="M 170.081219 85.039219 L 170.081219 2.988438 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    72
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.09291;stroke-miterlimit:10;" d="M -0.0008125 -2.988125 L -0.0008125 -85.038906 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    73
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.05458;stroke-miterlimit:10;" d="M -0.0008125 -85.038906 L 81.553875 -85.038906 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    74
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.05458;stroke-miterlimit:10;" d="M 88.526531 -85.038906 L 170.081219 -85.038906 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    75
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.09291;stroke-miterlimit:10;" d="M 170.081219 -85.038906 L 170.081219 -2.988125 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    76
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.19975;stroke-miterlimit:10;" d="M -0.0008125 42.519688 L 170.081219 42.519688 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    77
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    78
    +  <use xlink:href="">"#glyph0-2" x="15.009" y="64.357"/>
    
    79
    +  <use xlink:href="">"#glyph0-2" x="21.866484" y="64.357"/>
    
    80
    +</g>
    
    81
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    82
    +  <use xlink:href="">"#glyph0-3" x="28.853083" y="64.357"/>
    
    83
    +</g>
    
    84
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    85
    +  <use xlink:href="">"#glyph0-4" x="35.179757" y="64.357"/>
    
    86
    +</g>
    
    87
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.19975;stroke-miterlimit:10;" d="M -0.0008125 -42.519375 L 170.081219 -42.519375 " transform="matrix(1,0,0,-1,11.493,110.84)"/>
    
    88
    +</g>
    
    89
    +</svg>

  • freetype2/docs/glyphs/outlines-6.svg
    1
    +<?xml version="1.0" encoding="UTF-8"?>
    
    2
    +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="193.06pt" height="125.66pt" viewBox="0 0 193.06 125.66" version="1.1">
    
    3
    +<defs>
    
    4
    +<g>
    
    5
    +<symbol overflow="visible" id="glyph0-0">
    
    6
    +<path style="stroke:none;" d="M 0 0 L 7.171875 0 L 7.171875 -10.046875 L 0 -10.046875 Z M 1.140625 -0.71875 L 3.578125 -4.375 L 6.03125 -0.71875 Z M 0.71875 -8.671875 L 3.15625 -5.015625 L 0.71875 -1.359375 Z M 4.015625 -5.015625 L 6.453125 -8.671875 L 6.453125 -1.359375 Z M 3.578125 -5.671875 L 1.140625 -9.328125 L 6.03125 -9.328125 Z M 3.578125 -5.671875 "/>
    
    7
    +</symbol>
    
    8
    +<symbol overflow="visible" id="glyph0-1">
    
    9
    +<path style="stroke:none;" d="M 3 0.140625 C 4.03125 0.140625 4.96875 -0.609375 5.65625 -1.5625 C 5.609375 -1.703125 5.46875 -1.8125 5.328125 -1.8125 C 4.78125 -1.171875 4.203125 -0.703125 3.4375 -0.703125 C 3.203125 -0.703125 2.921875 -0.765625 2.71875 -1.03125 C 2.515625 -1.3125 2.359375 -1.59375 2.359375 -2.453125 C 2.359375 -4.59375 3.375 -5.859375 4.46875 -5.859375 C 4.671875 -5.859375 5.078125 -5.78125 5.078125 -5.3125 C 5.078125 -5.21875 5.046875 -5.109375 5 -5.03125 C 4.96875 -4.984375 4.9375 -4.8125 4.9375 -4.734375 C 4.9375 -4.5 5.078125 -4.28125 5.328125 -4.28125 C 5.703125 -4.28125 6.0625 -4.5625 6.0625 -4.921875 C 6.0625 -5.484375 6.03125 -6.296875 4.453125 -6.296875 C 3.890625 -6.296875 2.96875 -5.921875 2.359375 -5.296875 C 1.65625 -4.53125 1.1875 -3.421875 1.1875 -2.140625 C 1.1875 -1.65625 1.296875 -1.015625 1.625 -0.546875 C 1.921875 -0.125 2.40625 0.140625 3 0.140625 Z M 3 0.140625 "/>
    
    10
    +</symbol>
    
    11
    +<symbol overflow="visible" id="glyph0-2">
    
    12
    +<path style="stroke:none;" d="M 4.09375 -8.359375 C 4.296875 -9.296875 4.453125 -9.875 4.453125 -9.875 C 4.453125 -9.96875 4.40625 -10.015625 4.28125 -10.015625 C 3.890625 -9.875 2.859375 -9.6875 2.265625 -9.640625 L 2.21875 -9.296875 C 2.21875 -9.25 2.234375 -9.21875 2.296875 -9.21875 L 2.734375 -9.1875 C 2.921875 -9.1875 3.046875 -9.109375 3.046875 -8.796875 C 3.046875 -8.640625 3.015625 -8.390625 2.9375 -8.078125 L 1.46875 -1.515625 C 1.265625 -0.625 1.640625 0.140625 2.921875 0.140625 C 3.375 0.140625 3.9375 -0.046875 4.4375 -0.390625 C 5.734375 -1.296875 7.0625 -3.125 7.0625 -4.59375 C 7.0625 -5.5625 6.859375 -6.296875 5.546875 -6.296875 C 4.5625 -6.296875 3.828125 -5.390625 3.328125 -4.8125 L 3.296875 -4.8125 Z M 5.875 -4.3125 C 5.875 -2.234375 4.09375 -0.359375 3 -0.359375 C 2.484375 -0.359375 2.390625 -0.921875 2.625 -1.890625 L 3.109375 -3.953125 C 3.78125 -4.75 4.4375 -5.625 5.125 -5.625 C 5.546875 -5.625 5.875 -5.296875 5.875 -4.3125 Z M 5.875 -4.3125 "/>
    
    13
    +</symbol>
    
    14
    +<symbol overflow="visible" id="glyph0-3">
    
    15
    +<path style="stroke:none;" d="M 1.125 -2.328125 C 1.125 -1.5625 1.3125 0.140625 3.125 0.140625 C 3.578125 0.140625 4.03125 0.09375 4.453125 -0.125 C 5.6875 -0.765625 6.671875 -2.28125 6.671875 -3.96875 C 6.671875 -5 6.40625 -6.296875 4.640625 -6.296875 C 2.25 -6.296875 1.125 -4.046875 1.125 -2.328125 Z M 2.3125 -2.4375 C 2.3125 -3.734375 2.875 -5.828125 4.390625 -5.828125 C 4.8125 -5.828125 5.046875 -5.59375 5.265625 -5.1875 C 5.4375 -4.828125 5.484375 -4.296875 5.484375 -3.875 C 5.484375 -3.296875 5.390625 -2.0625 4.859375 -1.265625 C 4.453125 -0.640625 3.890625 -0.390625 3.34375 -0.390625 C 2.921875 -0.390625 2.3125 -0.9375 2.3125 -2.4375 Z M 2.3125 -2.4375 "/>
    
    16
    +</symbol>
    
    17
    +<symbol overflow="visible" id="glyph0-4">
    
    18
    +<path style="stroke:none;" d="M 3.078125 -4.4375 L 3.59375 -3.03125 L 2.25 -1.046875 C 2.109375 -0.828125 1.953125 -0.78125 1.84375 -0.78125 C 1.734375 -0.78125 1.578125 -0.796875 1.46875 -0.859375 C 1.328125 -0.921875 1.1875 -0.953125 1.046875 -0.953125 C 0.734375 -0.953125 0.5 -0.71875 0.5 -0.40625 C 0.5 -0.03125 1 0.140625 1.328125 0.140625 C 1.828125 0.140625 2.171875 -0.078125 2.796875 -0.96875 L 3.796875 -2.40625 L 4.34375 -0.65625 C 4.53125 -0.09375 4.671875 0.140625 5.15625 0.140625 C 5.671875 0.140625 6.296875 -0.125 6.734375 -0.875 C 6.6875 -1 6.5625 -1.125 6.390625 -1.140625 C 6.03125 -0.671875 5.84375 -0.5625 5.6875 -0.5625 C 5.546875 -0.5625 5.453125 -0.75 5.328125 -1.09375 L 4.5625 -3.40625 L 5.65625 -5 C 5.875 -5.328125 6.21875 -5.390625 6.328125 -5.390625 C 6.4375 -5.390625 6.625 -5.34375 6.75 -5.25 C 6.859375 -5.15625 7.078125 -5.109375 7.234375 -5.109375 C 7.4375 -5.109375 7.6875 -5.390625 7.6875 -5.71875 C 7.6875 -6.078125 7.296875 -6.296875 6.96875 -6.296875 C 6.25 -6.296875 5.78125 -6.046875 5.078125 -5.03125 L 4.359375 -4 L 3.953125 -5.265625 C 3.71875 -6.015625 3.5625 -6.296875 3.203125 -6.296875 C 2.875 -6.296875 1.8125 -5.703125 1.3125 -5.328125 C 1.3125 -5.171875 1.375 -5 1.484375 -4.890625 C 1.65625 -4.984375 2.140625 -5.203125 2.4375 -5.203125 C 2.625 -5.203125 2.765625 -5.15625 2.84375 -5.03125 C 2.890625 -4.921875 3 -4.6875 3.078125 -4.4375 Z M 3.078125 -4.4375 "/>
    
    19
    +</symbol>
    
    20
    +<symbol overflow="visible" id="glyph0-5">
    
    21
    +<path style="stroke:none;" d="M 7.109375 -2.765625 L 1.4375 -2.765625 L 1.3125 -2.0625 L 6.984375 -2.0625 Z M 7.4375 -4.5625 L 1.75 -4.5625 L 1.625 -3.859375 L 7.296875 -3.859375 Z M 7.4375 -4.5625 "/>
    
    22
    +</symbol>
    
    23
    +</g>
    
    24
    +<clipPath id="clip1">
    
    25
    +  <path d="M 36 96 L 72 96 L 72 125.660156 L 36 125.660156 Z M 36 96 "/>
    
    26
    +</clipPath>
    
    27
    +<clipPath id="clip2">
    
    28
    +  <path d="M 121 96 L 157 96 L 157 125.660156 L 121 125.660156 Z M 121 96 "/>
    
    29
    +</clipPath>
    
    30
    +<clipPath id="clip3">
    
    31
    +  <path d="M 68 0 L 193.058594 0 L 193.058594 100 L 68 100 Z M 68 0 "/>
    
    32
    +</clipPath>
    
    33
    +<clipPath id="clip4">
    
    34
    +  <path d="M 0 42 L 125 42 L 125 125.660156 L 0 125.660156 Z M 0 42 "/>
    
    35
    +</clipPath>
    
    36
    +<clipPath id="clip5">
    
    37
    +  <path d="M 68 42 L 193.058594 42 L 193.058594 125.660156 L 68 125.660156 Z M 68 42 "/>
    
    38
    +</clipPath>
    
    39
    +<clipPath id="clip6">
    
    40
    +  <path d="M 0 60 L 66 60 L 66 125.660156 L 0 125.660156 Z M 0 60 "/>
    
    41
    +</clipPath>
    
    42
    +<clipPath id="clip7">
    
    43
    +  <path d="M 127 60 L 193 60 L 193 125.660156 L 127 125.660156 Z M 127 60 "/>
    
    44
    +</clipPath>
    
    45
    +</defs>
    
    46
    +<g id="surface1">
    
    47
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 8.503906 74.136719 L 14.480469 74.136719 L 14.480469 68.160156 L 8.503906 68.160156 Z M 8.503906 74.136719 "/>
    
    48
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 178.585938 74.136719 L 184.5625 74.136719 L 184.5625 68.160156 L 178.585938 68.160156 Z M 178.585938 74.136719 "/>
    
    49
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.510906 42.520094 C 45.510906 44.172437 44.171062 45.508375 42.518719 45.508375 C 40.870281 45.508375 39.530437 44.172437 39.530437 42.520094 C 39.530437 40.86775 40.870281 39.531812 42.518719 39.531812 C 44.171062 39.531812 45.510906 40.86775 45.510906 42.520094 Z M 45.510906 42.520094 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    50
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 130.549969 42.520094 C 130.549969 44.172437 129.210125 45.508375 127.561688 45.508375 C 125.909344 45.508375 124.573406 44.172437 124.573406 42.520094 C 124.573406 40.86775 125.909344 39.531812 127.561688 39.531812 C 129.210125 39.531812 130.549969 40.86775 130.549969 42.520094 Z M 130.549969 42.520094 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    51
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 93.542969 31.617188 L 99.523438 31.617188 L 99.523438 25.640625 L 93.542969 25.640625 Z M 93.542969 31.617188 "/>
    
    52
    +<g clip-path="url(#clip1)" clip-rule="nonzero">
    
    53
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 45.510906 -42.518969 C 45.510906 -40.870531 44.171062 -39.530688 42.518719 -39.530688 C 40.870281 -39.530688 39.530437 -40.870531 39.530437 -42.518969 C 39.530437 -44.171313 40.870281 -45.50725 42.518719 -45.50725 C 44.171062 -45.50725 45.510906 -44.171313 45.510906 -42.518969 Z M 45.510906 -42.518969 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    54
    +</g>
    
    55
    +<g clip-path="url(#clip2)" clip-rule="nonzero">
    
    56
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 130.549969 -42.518969 C 130.549969 -40.870531 129.210125 -39.530688 127.561688 -39.530688 C 125.909344 -39.530688 124.573406 -40.870531 124.573406 -42.518969 C 124.573406 -44.171313 125.909344 -45.50725 127.561688 -45.50725 C 129.210125 -45.50725 130.549969 -44.171313 130.549969 -42.518969 Z M 130.549969 -42.518969 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    57
    +</g>
    
    58
    +<path style=" stroke:none;fill-rule:nonzero;fill:rgb(0%,0%,0%);fill-opacity:1;" d="M 93.542969 116.65625 L 99.523438 116.65625 L 99.523438 110.679688 L 93.542969 110.679688 Z M 93.542969 116.65625 "/>
    
    59
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0008125 0.0005625 C 28.346844 28.348219 56.6945 42.520094 85.042156 42.520094 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    60
    +<g clip-path="url(#clip3)" clip-rule="nonzero">
    
    61
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 85.042156 42.520094 C 113.385906 42.520094 141.733563 28.348219 170.081219 0.0005625 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    62
    +</g>
    
    63
    +<g clip-path="url(#clip4)" clip-rule="nonzero">
    
    64
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M -0.0008125 0.0005625 C 28.346844 -28.347094 56.6945 -42.518969 85.042156 -42.518969 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    65
    +</g>
    
    66
    +<g clip-path="url(#clip5)" clip-rule="nonzero">
    
    67
    +<path style="fill:none;stroke-width:1.99255;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 85.042156 -42.518969 C 113.385906 -42.518969 141.733563 -28.347094 170.081219 0.0005625 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    68
    +</g>
    
    69
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,9.4753;stroke-miterlimit:10;" d="M 2.987469 2.988844 L 40.053875 40.05525 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    70
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,9.05571;stroke-miterlimit:10;" d="M 46.007 42.520094 L 82.049969 42.520094 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    71
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,9.05571;stroke-miterlimit:10;" d="M 88.030438 42.520094 L 124.073406 42.520094 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    72
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,9.47574;stroke-miterlimit:10;" d="M 130.026531 40.05525 L 167.092938 2.988844 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    73
    +<g clip-path="url(#clip6)" clip-rule="nonzero">
    
    74
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,9.4753;stroke-miterlimit:10;" d="M 2.987469 -2.987719 L 40.053875 -40.054125 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    75
    +</g>
    
    76
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,9.05571;stroke-miterlimit:10;" d="M 46.007 -42.518969 L 82.049969 -42.518969 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    77
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,9.05571;stroke-miterlimit:10;" d="M 88.030438 -42.518969 L 124.073406 -42.518969 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    78
    +<g clip-path="url(#clip7)" clip-rule="nonzero">
    
    79
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:5.97766,9.47574;stroke-miterlimit:10;" d="M 130.026531 -40.054125 L 167.092938 -2.987719 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    80
    +</g>
    
    81
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.10158;stroke-miterlimit:10;" d="M -0.0008125 2.988844 L -0.0008125 42.520094 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    82
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.01855;stroke-miterlimit:10;" d="M -0.0008125 42.520094 L 39.034344 42.520094 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    83
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    84
    +  <use xlink:href="">"#glyph0-1" x="12.909" y="21.832"/>
    
    85
    +  <use xlink:href="">"#glyph0-2" x="18.489672" y="21.832"/>
    
    86
    +</g>
    
    87
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    88
    +  <use xlink:href="">"#glyph0-3" x="25.476271" y="21.832"/>
    
    89
    +</g>
    
    90
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    91
    +  <use xlink:href="">"#glyph0-4" x="31.802945" y="21.832"/>
    
    92
    +</g>
    
    93
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    94
    +  <use xlink:href="">"#glyph0-5" x="42.189594" y="21.832"/>
    
    95
    +</g>
    
    96
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    97
    +  <use xlink:href="">"#glyph0-2" x="53.336592" y="21.832"/>
    
    98
    +  <use xlink:href="">"#glyph0-2" x="60.194075" y="21.832"/>
    
    99
    +</g>
    
    100
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    101
    +  <use xlink:href="">"#glyph0-3" x="67.195021" y="21.832"/>
    
    102
    +</g>
    
    103
    +<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
    
    104
    +  <use xlink:href="">"#glyph0-4" x="73.521695" y="21.832"/>
    
    105
    +</g>
    
    106
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.01855;stroke-miterlimit:10;" d="M 131.046063 42.520094 L 170.081219 42.520094 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    107
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.10158;stroke-miterlimit:10;" d="M 170.081219 42.520094 L 170.081219 2.988844 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    108
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.10158;stroke-miterlimit:10;" d="M -0.0008125 -2.987719 L -0.0008125 -42.518969 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    109
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.01855;stroke-miterlimit:10;" d="M -0.0008125 -42.518969 L 39.034344 -42.518969 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    110
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.01855;stroke-miterlimit:10;" d="M 131.046063 -42.518969 L 170.081219 -42.518969 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    111
    +<path style="fill:none;stroke-width:0.99628;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-dasharray:2.98883,3.10158;stroke-miterlimit:10;" d="M 170.081219 -42.518969 L 170.081219 -2.987719 " transform="matrix(1,0,0,-1,11.493,71.149)"/>
    
    112
    +</g>
    
    113
    +</svg>

  • freetype2/docs/glyphs/outlines.tex
    1
    +% outlines.tex
    
    2
    +%
    
    3
    +% written 2022 by Werner Lemberg <wl@gnu.org>
    
    4
    +
    
    5
    +
    
    6
    +% This file contains graphics used for the 'FreeType Glyph Conventions'
    
    7
    +% tutorial, part 6, 'FreeType Outlines'.
    
    8
    +
    
    9
    +
    
    10
    +% Here is one possibility to convert this LaTeX file to both PNG and SVG
    
    11
    +% formats.
    
    12
    +%
    
    13
    +%   xelatex outlines.tex
    
    14
    +%
    
    15
    +%   pdftoppm -png -f 1 -l 4 -r 120 outlines.pdf outlines
    
    16
    +%   optipng outlines-*.png
    
    17
    +%
    
    18
    +%   for i in 1 2 3 4 5 6; do
    
    19
    +%     pdf2svg outlines.pdf outlines-$i.svg $i
    
    20
    +%   done
    
    21
    +
    
    22
    +
    
    23
    +\documentclass[tikz, border=3mm]{standalone}
    
    24
    +
    
    25
    +\usepackage{libertinus}
    
    26
    +
    
    27
    +\usetikzlibrary{
    
    28
    +  calc,
    
    29
    +  decorations,
    
    30
    +  fit,
    
    31
    +  positioning}
    
    32
    +
    
    33
    +% We need exact bounding boxes.
    
    34
    +\usepgflibrary{bbox}
    
    35
    +
    
    36
    +
    
    37
    +% A square shape.
    
    38
    +%
    
    39
    +% Taken from
    
    40
    +% https://tex.stackexchange.com/questions/300098/draw-a-node-as-a-square-with-tikz
    
    41
    +\makeatletter
    
    42
    +\def\squarecorner#1{
    
    43
    +  % Calculate x
    
    44
    +  %
    
    45
    +  % First, is width < minimum width?
    
    46
    +  \pgf@x=\the\wd\pgfnodeparttextbox
    
    47
    +  \pgfmathsetlength\pgf@xc{\pgfkeysvalueof{/pgf/inner xsep}}
    
    48
    +  \advance\pgf@x by 2\pgf@xc
    
    49
    +  \pgfmathsetlength\pgf@xb{\pgfkeysvalueof{/pgf/minimum width}}
    
    50
    +  \ifdim\pgf@x<\pgf@xb
    
    51
    +    % Yes, too small.  Enlarge...
    
    52
    +    \pgf@x=\pgf@xb
    
    53
    +  \fi
    
    54
    +
    
    55
    +  % Calculate y
    
    56
    +  %
    
    57
    +  % First, is height+depth < minimum height?
    
    58
    +  \pgf@y=\ht\pgfnodeparttextbox
    
    59
    +  \advance\pgf@y by\dp\pgfnodeparttextbox
    
    60
    +  \pgfmathsetlength\pgf@yc{\pgfkeysvalueof{/pgf/inner ysep}}
    
    61
    +  \advance\pgf@y by 2\pgf@yc
    
    62
    +  \pgfmathsetlength\pgf@yb{\pgfkeysvalueof{/pgf/minimum height}}
    
    63
    +  \ifdim\pgf@y<\pgf@yb
    
    64
    +    % Yes, too small.  Enlarge...
    
    65
    +    \pgf@y=\pgf@yb
    
    66
    +  \fi
    
    67
    +
    
    68
    +  % This `\ifdim` is the actual part that makes the node dimensions square.
    
    69
    +  \ifdim\pgf@x<\pgf@y
    
    70
    +    \pgf@x=\pgf@y
    
    71
    +  \else
    
    72
    +    \pgf@y=\pgf@x
    
    73
    +  \fi
    
    74
    +
    
    75
    +  % Calculate right border:
    
    76
    +  % `.5\wd\pgfnodeparttextbox + .5 \pgf@x + #1outer sep`.
    
    77
    +  \pgf@x=#1.5\pgf@x
    
    78
    +  \advance\pgf@x by.5\wd\pgfnodeparttextbox
    
    79
    +  \pgfmathsetlength\pgf@xa{\pgfkeysvalueof{/pgf/outer xsep}}
    
    80
    +  \advance\pgf@x by#1\pgf@xa
    
    81
    +
    
    82
    +  % Calculate upper border:
    
    83
    +  % `.5\ht-.5\dp + .5 \pgf@y + #1outer sep`.
    
    84
    +  \pgf@y=#1.5\pgf@y
    
    85
    +  \advance\pgf@y by-.5\dp\pgfnodeparttextbox
    
    86
    +  \advance\pgf@y by.5\ht\pgfnodeparttextbox
    
    87
    +  \pgfmathsetlength\pgf@ya{\pgfkeysvalueof{/pgf/outer ysep}}
    
    88
    +  \advance\pgf@y by#1\pgf@ya
    
    89
    +}
    
    90
    +\makeatother
    
    91
    +
    
    92
    +\pgfdeclareshape{square}{
    
    93
    +  \savedanchor\northeast{\squarecorner{}}
    
    94
    +  \savedanchor\southwest{\squarecorner{-}}
    
    95
    +
    
    96
    +  \foreach \x in {east, west}
    
    97
    +    \foreach \y in {north, mid, base, south}
    
    98
    +      {\inheritanchor[from=rectangle]{\y\space\x}}
    
    99
    +
    
    100
    +  \foreach \x in {east, west, north, mid, base, south, center, text}
    
    101
    +    {\inheritanchor[from=rectangle]{\x}}
    
    102
    +
    
    103
    +  \inheritanchorborder[from=rectangle]
    
    104
    +  \inheritbackgroundpath[from=rectangle]
    
    105
    +}
    
    106
    +
    
    107
    +
    
    108
    +% Node styles.
    
    109
    +\tikzset{
    
    110
    +  % For second-order Bézier curves.
    
    111
    +  conic/.style={
    
    112
    +    to path={(\tikztostart)
    
    113
    +               .. controls ($#1!1/3!(\tikztostart)$)
    
    114
    +                  and ($#1!1/3!(\tikztotarget)$)
    
    115
    +               .. (\tikztotarget)}},
    
    116
    +%
    
    117
    +  % For virtual on-points.
    
    118
    +  hollow square/.style={
    
    119
    +    square,
    
    120
    +    line width=1pt,
    
    121
    +    draw,
    
    122
    +    fill=white,
    
    123
    +    minimum size=6pt,
    
    124
    +    inner sep=0pt,
    
    125
    +    outer sep=0pt},
    
    126
    +%
    
    127
    +  % For on-points.
    
    128
    +  filled square/.style={
    
    129
    +    square,
    
    130
    +    fill,
    
    131
    +    minimum size=6pt,
    
    132
    +    inner sep=0pt,
    
    133
    +    outer sep=0pt},
    
    134
    +%
    
    135
    +  % 'Elastic dashes' adapt spaces between dashes to the line length so that
    
    136
    +  % the last dash doesn't get cut off partially.
    
    137
    +  %
    
    138
    +  % Taken from
    
    139
    +  % https://tex.stackexchange.com/questions/133271/can-tikz-dashed-lines-emulate-pstricks-dashed-lines
    
    140
    +  elastic dash/.code args={on #1 off #2}{
    
    141
    +    % Use csname so catcode of @ doesn't have do be changed.
    
    142
    +    \csname tikz@addoption\endcsname{%
    
    143
    +      \pgfgetpath\currentpath
    
    144
    +      \pgfprocessround{\currentpath}{\currentpath}%
    
    145
    +      \csname pgf@decorate@parsesoftpath\endcsname
    
    146
    +        {\currentpath}{\currentpath}%
    
    147
    +      \pgfmathparse{\csname pgf@decorate@totalpathlength\endcsname-#1}%
    
    148
    +      \let\rest=\pgfmathresult
    
    149
    +      \pgfmathparse{#1+#2}%
    
    150
    +      \let\onoff=\pgfmathresult
    
    151
    +      \pgfmathparse{max(floor(\rest/\onoff), 1)}%
    
    152
    +      \let\nfullonoff=\pgfmathresult
    
    153
    +      \pgfmathparse{max((\rest-\onoff*\nfullonoff)/\nfullonoff+#2, #2)}%
    
    154
    +      \let\offexpand=\pgfmathresult
    
    155
    +      \pgfsetdash{{#1}{\offexpand}}{0pt}}},
    
    156
    +%
    
    157
    +  % For main curves.
    
    158
    +  line/.style={
    
    159
    +    line width=2pt},
    
    160
    +%
    
    161
    +  % For auxiliary, dashed curves.
    
    162
    +  dashed line/.style={
    
    163
    +    elastic dash=on 6pt off 6pt,
    
    164
    +    line width=1pt},
    
    165
    +  % For auxiliary, densely dashed curves.
    
    166
    +  densely dashed line/.style={
    
    167
    +    elastic dash=on 3pt off 3pt,
    
    168
    +    line width=1pt},
    
    169
    +%
    
    170
    +  % For off-points.
    
    171
    +  hollow dot/.style={
    
    172
    +    draw,
    
    173
    +    line width=1pt,
    
    174
    +    circle,
    
    175
    +    minimum size=6pt,
    
    176
    +    inner sep=0pt},
    
    177
    +%
    
    178
    +  % For explanations.
    
    179
    +  description/.style={
    
    180
    +    font=\Large\itshape},
    
    181
    +}
    
    182
    +
    
    183
    +
    
    184
    +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    185
    +
    
    186
    +\begin{document}
    
    187
    +
    
    188
    +% It looks better for the curves to start and end at the center of the
    
    189
    +% nodes, avoiding a little bit of unwanted whitespace next to the on-point
    
    190
    +% boxes.
    
    191
    +
    
    192
    +% A line segment.
    
    193
    +
    
    194
    +\begin{tikzpicture}
    
    195
    +  \node[filled square] (A) at (0,0) {};
    
    196
    +  \node[filled square] (B) at (6,2) {};
    
    197
    +
    
    198
    +  \draw[line] (A.center) -- (B.center);
    
    199
    +\end{tikzpicture}
    
    200
    +
    
    201
    +
    
    202
    +% A conic curve with one off-point.
    
    203
    +
    
    204
    +\begin{tikzpicture}
    
    205
    +  \node[filled square] (A) at (0,0) {};
    
    206
    +  \node[hollow dot] (B) at (2,3) {};
    
    207
    +  \node[filled square] (C) at (6,2) {};
    
    208
    +
    
    209
    +  \draw[dashed line] (A) -- (B);
    
    210
    +  \draw[dashed line] (B) -- (C);
    
    211
    +
    
    212
    +  \draw[line] (A.center) to[conic={(B)}] (C.center);
    
    213
    +\end{tikzpicture}
    
    214
    +
    
    215
    +
    
    216
    +% A cubic curve with two off-points.
    
    217
    +
    
    218
    +\begin{tikzpicture}
    
    219
    +  \node[filled square] (A) at (0,0) {};
    
    220
    +  \node[hollow dot] (B) at (1,2) {};
    
    221
    +  \node[hollow dot] (C) at (4,3) {};
    
    222
    +  \node[filled square] (D) at (6,2) {};
    
    223
    +
    
    224
    +  \draw[dashed line] (A) -- (B);
    
    225
    +  \draw[dashed line] (B) -- (C);
    
    226
    +  \draw[dashed line] (C) -- (D);
    
    227
    +
    
    228
    +  \draw[line] (A.center) .. controls (B) and (C) .. (D.center);
    
    229
    +\end{tikzpicture}
    
    230
    +
    
    231
    +
    
    232
    +% A conic curve with two off-points and virtual on-point inbetween.
    
    233
    +
    
    234
    +\begin{tikzpicture}
    
    235
    +  \node[filled square] (A) at (0,0) {};
    
    236
    +  \node[hollow dot] (B) at (1,2) {};
    
    237
    +  \node[hollow dot] (D) at (5,0) {};
    
    238
    +  \node[filled square] (E) at (6,2) {};
    
    239
    +
    
    240
    +  \coordinate (C) at ($ (B) !.5! (D) $);
    
    241
    +
    
    242
    +  \draw[dashed line] (A) -- (B);
    
    243
    +  \draw[dashed line] (B) -- (C);
    
    244
    +  \draw[dashed line] (C) -- (D);
    
    245
    +  \draw[dashed line] (D) -- (E);
    
    246
    +
    
    247
    +  \draw[line] (A.center) to[conic={(B)}] (C.center);
    
    248
    +  \draw[line] (C.center) to[conic={(D)}] (E.center);
    
    249
    +
    
    250
    +  % This comes last since it must white out the inner part of the box.
    
    251
    +  \node[hollow square] at (C) {};
    
    252
    +\end{tikzpicture}
    
    253
    +
    
    254
    +
    
    255
    +% Show that the bounding box (bbox) can differ from the control point
    
    256
    +% bounding box (cbox).
    
    257
    +
    
    258
    +\begin{tikzpicture}[bezier bounding box]
    
    259
    +  \coordinate (A) at (0,0);
    
    260
    +  \coordinate (B) at (3,3);
    
    261
    +  \coordinate (B') at (3,-3);
    
    262
    +  \coordinate (C) at (6,0);
    
    263
    +
    
    264
    +  \path[save path=\pathtop] (A.center) to[conic={(B)}] (C.center);
    
    265
    +  \path[save path=\pathbottom] (A.center) to[conic={(B')}] (C.center);
    
    266
    +
    
    267
    +  \node[fit=(current bounding box),
    
    268
    +        inner sep=0pt,
    
    269
    +        outer sep=0pt] (bbox) {};
    
    270
    +
    
    271
    +  \node[filled square] (A) at (A) {};
    
    272
    +  \node[hollow dot] (B) at (B) {};
    
    273
    +  \node[hollow dot] (B') at (B') {};
    
    274
    +  \node[filled square] (C) at (C) {};
    
    275
    +
    
    276
    +  \draw[dashed line] (A) -- (B);
    
    277
    +  \draw[dashed line] (B) -- (C);
    
    278
    +  \draw[dashed line] (A) -- (B');
    
    279
    +  \draw[dashed line] (B') -- (C);
    
    280
    +
    
    281
    +  \draw[line] [use path=\pathtop];
    
    282
    +  \draw[line] [use path=\pathbottom];
    
    283
    +
    
    284
    +  \draw[densely dashed line] (A) -- (A |- B);
    
    285
    +  \draw[densely dashed line] (A |- B) -- (B);
    
    286
    +  \draw[densely dashed line] (B) -- (B -| C)
    
    287
    +    node[description, pos=0.8, above] {cbox};
    
    288
    +  \draw[densely dashed line] (B -| C) -- (C);
    
    289
    +
    
    290
    +  \draw[densely dashed line] (A) -- (A |- B');
    
    291
    +  \draw[densely dashed line] (A |- B') -- (B');
    
    292
    +  \draw[densely dashed line] (B') -- (B' -| C);
    
    293
    +  \draw[densely dashed line] (B' -| C) -- (C);
    
    294
    +
    
    295
    +  \draw[densely dashed line] (bbox.north west) -- (bbox.north east)
    
    296
    +    node[description, pos=0.1, above] {bbox};
    
    297
    +  \draw[densely dashed line] (bbox.south west) -- (bbox.south east);
    
    298
    +\end{tikzpicture}
    
    299
    +
    
    300
    +
    
    301
    +% Show that the bounding box (bbox) is identical to the control point
    
    302
    +% bounding box (cbox) if the curve uses points at the extrema.
    
    303
    +
    
    304
    +\begin{tikzpicture}
    
    305
    +  \coordinate (P) at (3,3);
    
    306
    +  \coordinate (P') at (3,-3);
    
    307
    +
    
    308
    +  \node[filled square] (A) at (0,0) {};
    
    309
    +  \node[filled square] (E) at (6,0) {};
    
    310
    +
    
    311
    +  \node[hollow dot] (B) at ($ (A) !.5! (P) $) {};
    
    312
    +  \node[hollow dot] (D) at ($ (P) !.5! (E) $) {};
    
    313
    +  \node[filled square] (C) at ($ (B) !.5! (D) $) {};
    
    314
    +
    
    315
    +  \node[hollow dot] (B') at ($ (A) !.5! (P') $) {};
    
    316
    +  \node[hollow dot] (D') at ($ (P') !.5! (E) $) {};
    
    317
    +  \node[filled square] (C') at ($ (B') !.5! (D') $) {};
    
    318
    +
    
    319
    +  % It looks better for these two curves to start and end at the center of
    
    320
    +  % the nodes, avoiding a little bit of unwanted whitespace next to the
    
    321
    +  % on-point boxes.
    
    322
    +  \draw[line] (A.center) to[conic={(B)}] (C.center);
    
    323
    +  \draw[line] (C.center) to[conic={(D)}] (E.center);
    
    324
    +  \draw[line] (A.center) to[conic={(B')}] (C'.center);
    
    325
    +  \draw[line] (C'.center) to[conic={(D')}] (E.center);
    
    326
    +
    
    327
    +  \draw[dashed line] (A) -- (B);
    
    328
    +  \draw[dashed line] (B) -- (C);
    
    329
    +  \draw[dashed line] (C) -- (D);
    
    330
    +  \draw[dashed line] (D) -- (E);
    
    331
    +
    
    332
    +  \draw[dashed line] (A) -- (B');
    
    333
    +  \draw[dashed line] (B') -- (C');
    
    334
    +  \draw[dashed line] (C') -- (D');
    
    335
    +  \draw[dashed line] (D') -- (E);
    
    336
    +
    
    337
    +  \draw[densely dashed line] (A) -- (A |- B);
    
    338
    +  \draw[densely dashed line] (A |- B) -- (B)
    
    339
    +    node[description, pos=0.9, above, yshift=1mm] {cbox = bbox};
    
    340
    +  \draw[densely dashed line] (D) -- (D -| E);
    
    341
    +  \draw[densely dashed line] (D -| E) -- (E);
    
    342
    +
    
    343
    +  \draw[densely dashed line] (A) -- (A |- B');
    
    344
    +  \draw[densely dashed line] (A |- B') -- (B');
    
    345
    +  \draw[densely dashed line] (D') -- (D' -| E);
    
    346
    +  \draw[densely dashed line] (D' -| E) -- (E);
    
    347
    +\end{tikzpicture}
    
    348
    +
    
    349
    +\end{document}

  • freetype2/docs/glyphs/points_conic.png deleted
    No preview for this file type
  • freetype2/docs/glyphs/points_conic2.png deleted
    No preview for this file type
  • freetype2/docs/glyphs/points_cubic.png deleted
    No preview for this file type
  • freetype2/docs/glyphs/points_segment.png deleted
    No preview for this file type

  • reply via email to

    [Prev in Thread] Current Thread [Next in Thread]