freetype-commit
[Top][All Lists]
Advanced

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

[Git][freetype/freetype-web][master] Update about GSoC 2024


From: suzuki toshiya (@mpsuzuki)
Subject: [Git][freetype/freetype-web][master] Update about GSoC 2024
Date: Sun, 03 Mar 2024 09:05:57 +0000

suzuki toshiya pushed to branch master at FreeType / FreeType Website

Commits:

  • fe5d975e
    by suzuki toshiya at 2024-03-03T09:05:54+00:00
    Update about GSoC 2024
    

1 changed file:

Changes:

  • gsoc.html
    ... ... @@ -52,7 +52,7 @@
    52 52
             <div>
    
    53 53
               <p>The FreeType project participates in
    
    54 54
                 <a href="">"https://summerofcode.withgoogle.com/">Google
    
    55
    -              Summer of Code 2023</a>.  Here is our list of possible
    
    55
    +              Summer of Code 2024</a>.  Here is our list of possible
    
    56 56
                   projects – if you have more ideas, please write to
    
    57 57
                   our <a href="">"mailto:freetype-devel@nongnu.org">mailing
    
    58 58
                   list</a> so that we can discuss your suggestions,
    
    ... ... @@ -137,121 +137,6 @@
    137 137
                 </dd>
    
    138 138
               </dl>
    
    139 139
     
    
    140
    -          <dl>
    
    141
    -            <dt>Integrate FreeType with alternative rendering
    
    142
    -              engines</dt>
    
    143
    -
    
    144
    -            <dd>
    
    145
    -              <p>Raph Levien has
    
    146
    -                developed <a href="">"https://github.com/raphlinus/font-rs"><code>font-rs</code></a>,
    
    147
    -                an experimental font renderer written in
    
    148
    -                the <a href="">"https://www.rust-lang.org/">Rust
    
    149
    -                  programming language</a>.
    
    150
    -                A <a href="">"https://medium.com/@raphlinus/inside-the-fastest-font-renderer-in-the-world-75ae5270c445">blogpost</a>
    
    151
    -                describes some of its features in more detail.  It
    
    152
    -                claims to be much faster than FreeType's anti-aliasing
    
    153
    -                rendering module due to SIMD optimizations.</p>
    
    154
    -
    
    155
    -              <p>Note that
    
    156
    -                the <a href="">"https://github.com/mooman219/fontdue"><code>fontdue</code></a>
    
    157
    -                Rust package is another rendering engine based on
    
    158
    -                <code>font-rs</code>, and it claims to be even faster
    
    159
    -                and is actively developed.  You can find some additional
    
    160
    -                discussion <a href="">"https://www.reddit.com/r/rust/comments/ilnd41/fontdue_the_fastest_font_renderer_in_the_world">here</a>.
    
    161
    -                Another project inspired by <code>font-rs</code> is
    
    162
    -                <a href="">"https://github.com/servo/pathfinder"><code>Pathfinder</code></a>,
    
    163
    -                which takes advantages of GPU rendering.</p>
    
    164
    -
    
    165
    -              <p>The project is continuing and eventually finalizing
    
    166
    -                a <a href="">"https://gitlab.freedesktop.org/freetype/freetype/-/tree/gsoc-anurag-2022-final">GSoC
    
    167
    -                2022 contribution</a> (which couldn't be finished then
    
    168
    -                properly due to circumstances out of the student's
    
    169
    -                control) about implementing an
    
    170
    -                alternative <a href="">"https://www.freetype.org/freetype2/docs/reference/ft2-module_management.html#ft_renderer"><code>FT_Renderer</code></a>
    
    171
    -                module in&nbsp;C that can take priority over the
    
    172
    -                native FreeType rasterizer.  It should either wrap the
    
    173
    -                calls to a linked precompiled object or port the Rust
    
    174
    -                code to&nbsp;C.  It requires in-depth feasibility
    
    175
    -                analysis of either approach and a good understanding
    
    176
    -                of FreeType's architectural details.</p>
    
    177
    -
    
    178
    -              <p><em>Difficulty:</em> high.  <em>Size:</em>
    
    179
    -                175h/350h.  <em>Requirements:</em> Rust, C, Unix build
    
    180
    -                tools.  <em>Potential mentors:</em> Werner Lemberg,
    
    181
    -                Alexei Podtelezhnikov, Toshiya Suzuki (FreeType), Raph
    
    182
    -                Levien (Google).</p>
    
    183
    -            </dd>
    
    184
    -          </dl>
    
    185
    -
    
    186
    -          <dl>
    
    187
    -            <dt>Add a &lsquo;capability database&rsquo; to FreeType's
    
    188
    -              auto-hinter</dt>
    
    189
    -
    
    190
    -            <dd>
    
    191
    -              <p>At smaller sizes, usually in the range 12ppem to
    
    192
    -                20ppem, it can happen that separate outlines of glyphs
    
    193
    -                touch each other (mainly caused by rounding issues),
    
    194
    -                making glyphs illegible.  A typical example is glyph
    
    195
    -                &lsquo;i&rsquo;, where the vertical space between the
    
    196
    -                dot on the&nbsp;i and the body must have a certain
    
    197
    -                size to let the reader's eye separate the two parts.
    
    198
    -                [Note that the auto-hinter's capability to hint glyphs
    
    199
    -                smaller than 12ppem is very limited in general and
    
    200
    -                thus not part of this project description.]</p>
    
    201
    -
    
    202
    -              <p>Another example is the tilde accent, &lsquo;~&rsquo;,
    
    203
    -                used in languages like Spanish: Even at smaller sizes
    
    204
    -                the wiggle of the accent shape must be preserved,
    
    205
    -                otherwise it can happen that a character like
    
    206
    -                &lsquo;ã&rsquo; looks like &lsquo;ā&rsquo;.</p>
    
    207
    -
    
    208
    -              <p>There are numerous other cases where some knowledge
    
    209
    -                of the shape of a given glyph might help the
    
    210
    -                <a href="">"https://www.freetype.org/autohinting/hinter.html">auto-hinter</a>
    
    211
    -                improve the hinting, irrespective of the font shape or
    
    212
    -                family – coming back to glyph &lsquo;i&rsquo;, the dot
    
    213
    -                on the&nbsp;i and its body must be separate for
    
    214
    -                virtually all available fonts.</p>
    
    215
    -
    
    216
    -              <p>The project consists of the following parts.</p>
    
    217
    -
    
    218
    -              <ul>
    
    219
    -                <li>Identify hinting problems of the auto-hinter
    
    220
    -                  related to shape distortion and accent positioning.
    
    221
    -                  A good starting point is
    
    222
    -                  the <a href="">"https://gitlab.freedesktop.org/groups/freetype/-/issues">FreeType
    
    223
    -                  bug database.</a></li>
    
    224
    -
    
    225
    -                <li>Collect necessary adjustments.  For the above two
    
    226
    -                  examples, it would be necessary (a)&nbsp;to tell the
    
    227
    -                  auto-hinter that there must be a certain vertical
    
    228
    -                  distance between the body and its accent, and
    
    229
    -                  (b)&nbsp;to distort some glyph shapes intentionally
    
    230
    -                  so that rasterization at small ppem values gives
    
    231
    -                  decent results.</li>
    
    232
    -
    
    233
    -                <li>Invent a database format (to be compiled into the
    
    234
    -                  library) that describes the necessary actions.
    
    235
    -                  Basically, this would be a key-value table, where
    
    236
    -                  the key is the Unicode character code of the
    
    237
    -                  affected glyph, and the value is a list of necessary
    
    238
    -                  actions.</li>
    
    239
    -
    
    240
    -                <li>Add a mechanism to the auto-hinter to read the
    
    241
    -                  database, and to apply the action (shift, distort,
    
    242
    -                  whatever) to the affected glyph outlines if
    
    243
    -                  necessary.  This last feature is the non-trivial
    
    244
    -                  part of this project.</li>
    
    245
    -              </ul>
    
    246
    -
    
    247
    -              <p><em>Difficulty:</em> medium to high.  <em>Size:</em>
    
    248
    -                350h.  <em>Requirements:</em> C, and ideally some
    
    249
    -                basic font hinting and rasterization
    
    250
    -                knowledge.  <em>Potential mentors:</em> Werner
    
    251
    -                Lemberg, Alexei Podtelezhnikov (FreeType).</p>
    
    252
    -            </dd>
    
    253
    -          </dl>
    
    254
    -
    
    255 140
               <dl>
    
    256 141
                 <dt>Integrate <code>ftbench</code> into FreeType's build
    
    257 142
                   structure(s)</dt>
    
    ... ... @@ -349,7 +234,7 @@
    349 234
             <!-- ************************************************** -->
    
    350 235
     
    
    351 236
             <div class="updated">
    
    352
    -          <p>Last update: 23-Feb-2023</p>
    
    237
    +          <p>Last update: 03-Mar-2024</p>
    
    353 238
             </div>
    
    354 239
           </div>
    
    355 240
         </div>
    


  • reply via email to

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