icu VS harfbuzz

Compare icu vs harfbuzz and see what are their differences.

Our great sponsors
  • InfluxDB - Access the most powerful time series database as a service
  • Sonar - Write Clean C++ Code. Always.
  • SaaSHub - Software Alternatives and Reviews
icu harfbuzz
12 27
1,993 2,993
2.3% 1.1%
9.5 9.9
3 days ago 5 days ago
C++ C++
GNU General Public License v3.0 or later GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.


Posts with mentions or reviews of icu. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-05-25.
  • Should golang create a money library on the exp package?
    2 projects | /r/golang | 25 May 2023
    OP, is this money in the context of storing and counting money, or money in the context of internationalization and localization? For the latter, you probably want bindings to icu or the x/text/currency package.
  • Setting the TZ environment variable avoids thousands of system calls
    3 projects | | 11 Jan 2023

    This affects all packages that have icu as a dependency, one of them being Node.js.

    I discovered this the hard way when some code malfunctioned shortly after daylight savings time kicked in.

  • Charlock_holmes installation error, Windows 11.
    2 projects | /r/ruby | 3 Oct 2022
    Installing icu4c from and put the path in "--with-icu-lib"
  • How to cout a non-ASCII character within a non-ASCII string
    2 projects | /r/cpp_questions | 17 Mar 2022
    You need something like icu.
  • Reverse-Engineering Apple Dictionary
    7 projects | | 12 Sep 2021
    No, the ICU dictionaries are seen at:

    No idea where the corresponding files are in osx.

  • How I installed Apertium on CentOS 7
    6 projects | | 10 Jun 2021
    #!/bin/bash set -x mkdir -p apertium-src && \ mkdir -p $MTDIR cd apertium-src && \ wget -O - \ | gzip -dc \ | tar -xf - && \ cd gcc-8.5.0 && \ ./configure --prefix=$MTDIR --disable-multilib && \ make -j $(nproc) && \ make install && \ cd .. || exit 1 cd apertium-src && \ wget -O - \ | gzip -dc \ | tar -xf - \ && cd icu/source \ && CC=gcc CXX=g++ ./configure --prefix=$MTDIR \ && CC=gcc CXX=g++ make -j $(nproc) \ && CC=gcc CXX=g++ make install \ && cd ../.. \ || exit 1 cd apertium-src && \ svn checkout vislcg3 && \ cd vislcg3 && ./ \ && ./ -DCMAKE_INSTALL_PREFIX=$MTDIR \ -DICU_INCLUDE_DIR=$MTDIR/include \ -DICU_LIBRARY=$MTDIR/lib/ \ -DICU_IO_LIBRARY=$MTDIR/lib/ \ -DICU_I18N_LIBRARY=$MTDIR/lib/ \ && make -j$(nproc) && \ make install && cd .. || exit 1 cd apertium-src && \ git clone && \ cd lttoolbox && ./ --prefix=$MTDIR && make -j $(nproc) && make install && cd ../.. || exit 1 cd apertium-src && \ git clone && \ cd apertium && ./ --prefix=$MTDIR && make -j $(nproc) && make install && cd ../.. || exit 1 cd apertium-src && \ git clone && \ cd apertium-lex-tools && ./ --prefix=$MTDIR && make -j $(nproc) && make install && cd ../.. || exit 1 cd apertium-src && \ git clone && \ cd apertium-tha && ./ --prefix=$MTDIR && make && make install && cd ../.. || exit 1 cd apertium-src && \ git clone && \ cd apertium-tha-eng && ./ --prefix=$MTDIR && make && make install && cd .. && \ cd .. || exit 1
  • Manticore Search: 3 years after forking from Sphinx
    5 projects | | 19 Mar 2021
    Chinese segmentation using the ICU library


Posts with mentions or reviews of harfbuzz. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-04-06.
  • ImGui or text rendering libraries
    7 projects | /r/C_Programming | 6 Apr 2023
    As for text, it depends very heavily on what exactly you need. Simple ASCII text and bitmap fonts? Just do it yourself or get a .bdf parser. Simple Latin/Cyrillic-like writing with ok-looking vector fonts (ttfs)? stb_truetype has all you need. Font hinting, subpixel rendering? You use freetype. More complex writing like Arabic? You will have to do shaping as well, say with HarfBuzz. Need right-to-left or unidirectional text? Hypenation? Go for platform APIs if you can (DirectWrite om Windows, CoreText on Mac).
  • QuestPDF: Modern .NET library for PDF document generation
    14 projects | | 18 Jan 2023
    Gold standard? Even though serious bugs are not fixed [1] because "the code is too fragile to touch at this point"? Looks like Android uses HarfBuzz, if so it can't be that bad.


  • A Programmable Markup Language for Typesetting [pdf]
    9 projects | | 18 Jan 2023
    The linked libraries are not even close to solving limited subsets of problems solved by FreeType or HarfBuzz. No test is needed if they do not even have a working implementation of particular requisites: Do they work on heterogeneous layouts, directions, languages, locales, scripts, symbols and composites, extensions, variations, legacy, missing, partial or corrupted instructions, standards interpretations, platforms, output devices, nonstandard point structures and grids?

    They do not. What they solve is almost a toy problem compared to the size, scope and breadth of these libraries.

    Just because some project is implemented in Rust does not make it comparable never mind superior by default.

    There is a world out there and it is not homogeneous format and standards-compliant Latin fonts in English LTR text in linear disposition with some generic rectangular subpixel rendering on a regular rectangular grid.

    I warmly welcome you to browse closed issues of FreeType [1] and also the closed issues of HarfBuzz [2]. If you feel inspired please do also look into mailing lists and discussion pages related to the development, building, tracking and patching of packages of these projects in any of the numerous places it is used.

    The only argument Rust people have is in relation WASM but if you insist in targeting WASM why not fork FreeType, strip it to the strict subset of features your application needs and target it?

    Why do it in the first place? Why reinvent the wheel?

    As such I will restate my view: I see no gain in using any of these subpar libraries.



  • Ask HN: What are some excellent pieces of software written by a single person?
    9 projects | | 8 Nov 2022
    I'm not sure if it truly fits this category, but HarfBuzz[0], maintained primarily by Behdad Esfahbod, comes to mind.


  • da zero a programmare un programma di scrittura e una tastiera?
    3 projects | /r/ItalyInformatica | 6 Oct 2022
  • Is There An Algorithm To How Computer Cursors Highlight Text?
    2 projects | /r/computerscience | 12 Jun 2022
    harfbuzz is a popular library for text rendering. You may also want to check out rustybuzz, a small subset of harfbuzz ported to Rust with pretty great documentation.
  • Rendering text
    2 projects | /r/opengl | 1 May 2022
    I also use HarfBuzz to take care of text shaping (because some languages require different glyphs depending on the context - Arabic for example requires letters to be connected in a word).
  • What should we know about fonts?
    6 projects | /r/gamedev | 17 Feb 2022
    And if a person embarks on rendering their own fonts with freetype, they will likely need to use harfbuzz for shaping.
  • Text Rendering Hates You
    7 projects | | 14 Feb 2022
    Have you looked into harfbuzz? afaik it's designed to solve that problem, for all languages.

  • Any good video tutorials on making a OS with a GUI?
    5 projects | /r/osdev | 10 Dec 2021
    Then there is the entire internationalization problem for which you have to implement most of the Unicode standard, the reports can be found here: and in general you will need the bidirectional algorithm for Hewbrew/Arabic texts, normalization, the line breaking algorithm, the script property and probably text segmentation. On top, you will also need to deal with text shaping (e.g. For instance é should be rendered as é and not as e' (even though the grapheme may consist of two code points, there is also a version that is a single code point).

What are some alternatives?

When comparing icu and harfbuzz you can also consider the following projects:

imgui-sfml - Dear ImGui backend for use with SFML

contour - Modern C++ Terminal Emulator

nanovg - Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.

c-ares - A C library for asynchronous DNS requests

imgui_sdl - ImGuiSDL: SDL2 based renderer for Dear ImGui

Tehreer-Android - Standalone text engine for Android aimed to be free from platform limitations

quackle - Quackle crossword game artificial intelligence and analysis tool

msdfgen - Multi-channel signed distance field generator

awesome-typography - ✏︎ Curated list about digital typography 🔥

html5lib - Standards-compliant library for parsing and serializing HTML documents and fragments in Python

manticoresearch - Easy to use open source fast database for search | Good alternative to Elasticsearch now | Drop-in replacement for E in the ELK soon

utfcpp - UTF-8 with C++ in a Portable Way