1

Recently i asked two questions (1 and 2) about using OpenType features in programs written by python and .net languages, but didn't get an answer. i realized there is no way to change text rendering engines of operating systems, or force them to use OpenType. so now want to implement my own. such a program that:

  • provides a text engine that
    • receives glyph shapes from otf and ttf files and renders them in sequence of glyphs in text.
    • generates all of OTL features
  • can be used in other parts of applications like controls and components of .NET or python GUI libraries.

if python and .net languages are not suitable in this situation, aware me about other programming languages or tools.
comments and answers about text rendering system of common Operating Systems, or designing text engines compatible with unicode 5.02 protocol are welcomed.

Community
  • 1
  • 1
sorush-r
  • 9,347
  • 14
  • 77
  • 160

2 Answers2

1

What do you want do at last?

Just rendering some text but NOT with simple Windows provided API? Have a look at this.

Configuring fonts OpenType features on rendering for a simple text (same script and language)? Try to implement one of this examples on C++, then bind to your favorite language. It is not a very hard task if you know a bit about C++ programming on Windows.

Doing a whole text rendering thing? Handling bidi, line wrapping and ...? Well, your answer is Pango/Cairo, but bringing them on Windows is not an easy task either, but that would be easy if you try and install GTK#/Mono on Windows.

Is not sufficient? Try to use CefSharp or similar solutions on your project.

You may find these answers useful also: ^ ^

Community
  • 1
  • 1
Ebrahim Byagowi
  • 8,152
  • 4
  • 55
  • 71
1

Pango+Cairo does what you want

You might want to check out Pango which is a text layout and rendering engine which can handle OpenType ... see This blog entry on advanced opentype in Pango.

Pango also uses Cairo for rendering fonts, blocks of text using an SVG like backend.

Aiden Bell
  • 27,370
  • 3
  • 68
  • 117