Complex Text on Simple Devices

Total Page:16

File Type:pdf, Size:1020Kb

Complex Text on Simple Devices Complex Text on Simple Devices Pedro Navarro Sr. Software Engineer / Streaming Client Technologies 1 Background 2 Gibbon ● Codename for our JavaScriptCore-based application framework. It provides objects to create UI elements, access the device and perform video playback. ● Written in portable C++ targeted to the lowest common denominator ● Runs in Consumer Electronic devices (TVs, Blu-Ray players, Roku devices), Android TV and Game Consoles (from the Wii to the PS4 Pro) Netflix UI Powered by Gibbon since 2013 3 Constraints ● We are targeting devices with very low capabilities (128mb total RAM) and, in many cases, with a Read Only file system. ● We don’t control the host we are running on, so we have to be ready to work with old compilers and different versions, and combinations, of all third party libraries we use ● Very long release cycles: except for game consoles it takes 12 months from the time we provide our SDK until there are devices in the market with it. ● No upgrades! We are part of the device’s firmware. OLD DEVICE Luckily, we didn’t have to ● Small footprint. Our binaries and fonts have to be as small as support this one. possible, as flash storage is scarce ● Different graphics platforms. We need to run on DirectFB, OpenGL and Game Console graphics APIs. 4 2013’s Text Engine ● Our first iteration of Gibbon’s Text Layout Engine was very simple and provided just 1:1 mapping between characters in a text string and glyph indices in a font. ● The character set was WGL-4, which we extended later to add additional Latin glyphs. ● Support for CJK was added by introducing fall fallbacks. 2013 Supported Writing Systems ■ Latin (425 languages) ■ Cyrillic (106 languages) ■ Greek (1 language) ■ Chinese (5 languages) ■ Japanese (1 language) ■ Hangul (1 language) 5 Global Launch ● For the global launch we had to be ready well in advance because of the long release times. ● We defined our own Character Set (NGL-2), to standardize our fonts and our content. ● Supporting Complex Scripts meant that we had to integrate text shaping and BiDi processing. ● Research showed that the vast majority of devices we needed to support, besides game consoles, would be low performance set-top boxes. Global launch candidates: Indic writing systems: ■ Arabic (38 languages) ■ Bengali (5 languages) ● It’s important for us to get pixel fidelity between ■ Hebrew (9 languages) ■ Devanagari (19 languages) platforms, so the UI doesn’t have to account for ■ Ge’ez ■ Gurmukhi ■ Georgian ■ Gujarati (2 languages) differences. ■ Armenian ■ Kannada (4 languages) ■ Tibetan (4 languages) ■ Malayalam (2 languages) ■ Khmer ■ Oriya (2 languages) ■ Lao ■ Tamil ■ Thai ■ Telugu ■ Burmese 6 Global Text Layout Engine Features ● Font Handling ○ Modular fonts ○ Aliasing, fallbacks and substitution ○ Synthetic bold and italic support ● Text Shaping ○ Context based glyphs ○ Ligatures (substitution) ○ Positioning ○ Reordering ● Text Layout ○ Rich text ○ Bidirectional support ○ Line breaking (word wrapping) 7 Font fallbacks 8 Font fallbacks / Font linking ● Font linking automatically picks glyphs from other fonts, if not present in the active one, that offer the Unicode range where the missing glyph is. ● Font linking lets us ships fonts for each script as needed, making the deployments modular. ● Design points: ○ A writable file system is not guaranteed, so Fontconfig’s cache solution would not work for us. Fontconfig might not be available on the system so we would have to supply ours. ○ We are not generic: we control the fonts that are in our system and the content we are going to display. ○ We know the font we want to use for every writing system. 9 <settings> <aliases>Helvetica, Sans, serif</aliases> </settings> Font fallbacks <!-- Font file: Arial_for_Netflix-R.ttf Family: Arial_for_Netflix ● Build time: Style: Regular Glyph count: 919 At font licensing time, subset the font to leave only the glyphs --> for that particular writing system (no latin in CJK fonts, for <regular> <file>fonts/Arial_for_Netflix-R.ttf</file> example) plus the space (U+0020) <settings> <bbox>-136,-621+143x1864</bbox> Scan the fonts at build time and write to a configuration file <default_bbox>-1006,-665+2222x1864</default_bbox> which Unicode Blocks the font has glyphs in. </settings> <blocks> <block1>000000-00007F</block1> <!-- Basic Latin (95 characters) ● Run time: <block2>000080-0000FF</block2> <!-- Latin-1 Supplement (96 characters) <block3>000100-00017F</block3> <!-- Latin Extended-A (128 characters) When a glyph is not found in the current font, search for fonts <block4>000180-00024F</block4> <!-- Latin Extended-B (24 characters) that can supply the needed Unicode Block, sorted by language <block5>000250-0002AF</block5> <!-- IPA Extensions (9 characters) <block6>0002B0-0002FF</block6> <!-- Spacing Modifier Letters (9 characters) and priority. Keep going down the list until a match is found. <block7>000300-00036F</block7> <!-- Combining Diacritical Marks (10 characters) <block8>000370-0003FF</block8> <!-- Greek and Coptic (73 characters) Once a match is found, keep using the same font until a new <block9>000400-0004FF</block9> <!-- Cyrillic (122 characters) Unicode Block is needed. … <block26>00FE70-00FEFF</block26> <!-- Arabic Presentation Forms-B (1 character) </blocks> Spaces are always considered to be part of the current <languages>*-Latn,*-Grek,*-Cyrl</languages> Unicode Block, so we keep spacing consistent by using the <priority>200</priority> Font definition file </regular> Excerpt of our fonts.xml space glyph for each script’s font. configuration file 10 Text Layout 驩檤 <span color='yellow'>サ捯ひろ驚</span> 11 Attributes [00] 0 - 0: [00:000-000] Japanese 20 [LTR] [01] 1 - 2: [00:000-000] Traditional_Chinese 20 [LTR] [02] 3 - 3: [00:000-000] Japanese 20 [LTR] [03] 4 - 4: [00:000-000] Traditional_Chinese 20 [LTR] [04] 5 - 7: [00:000-000] Japanese 20 [LTR] Text direction runs Text Layout [00] 0 - 7: LTR (0:0-0) Embedding levels: 0 0 0 0 0 0 0 0 Visual map: 0 1 2 3 4 5 6 7 ● Infrastructure: Visual embeddings: 0 0 0 0 0 0 0 0 Text script runs [00] 0 - 2: Hani ICU for BiDi, Script categorization and line breaking. [01] 3 - 3: Kana [02] 4 - 4: Hani Freetype for rasterization. [03] 5 - 6: Hira [04] 7 - 7: Hani Harfbuzz for text shaping. Text locale runs [00] 0 - 7: ja ● Itemization: Word breaks [00] 0 - 0: |驩| White space is collapsed according to the HTML5 rules. [01] 1 - 2: |檤 | [02] 3 - 3: |サ| [03] 4 - 4: |捯| Fonts are resolved before shaping, so we shape the longest [04] 5 - 5: |ひ| possible run of the same font. We don’t fall back to the base [05] 6 - 6: |ろ| font for spaces. [06] 7 - 7: |驚| Line breaks Attributes We add synthesized bold and oblique styles to the list of [00] 0 - 0: [00:000-000] Japanese 20 [LTR] Hani available fonts. [01] 1 - 2: [00:000-000] Traditional_Chinese 20 [LTR] Hani [02] 3 - 3: [00:000-000] Japanese 20 [LTR] Kana We try to find locales, specified in a <span> or by inferring it [03] 4 - 4: [00:000-000] Traditional_Chinese 20 [LTR] Hani [04] 5 - 6: [00:000-000] Japanese 20 [LTR] Hira from the script, to use ICU’s dictionary based line breaking Sample text layout [05] 7 - 7: [00:000-000] Japanese 20 [LTR] Hani Debug information our itemizer when available. provides about a text object 驩檤 <span color='yellow'>サ捯ひろ驚</span> 12 Itemizer layout - Bounds: [0,0+146x22] - Desired: [0,0+300x200] Padding: [0x0] - Indent: 0 Mirror: false [00] Line: [0,0+146x22] | Dir: RTL | Padding: 0+0 [00] Text run: Bounds: [0,0+20x21] | Ascent: -18 Direction: LTR: [00:000-000] Buffer offsets: 0 - 0 Text Layout Buffer contents: gid6521=0 [01] Text run: Bounds: [20,1+26x21] | Ascent: -17 Direction: LTR: [00:000-000] ● Text layout: Buffer offsets: 0 - 1 Buffer contents: gid6606=1|gid3=2 [02] Text run: Bounds: [46,0+20x21] | Ascent: -18 Emphasis on being one-pass. We forget the text string as soon Direction: LTR: [00:000-000] as we have itemized it. Buffer offsets: 0 - 0 Buffer contents: gid134=3 Harfbuzz buffers are referenced by multiple “items”. Each [03] Text run: Bounds: [66,1+20x21] | Ascent: -17 Direction: LTR: [00:000-000] item has a harfbuzz buffer starting and ending offset. Buffer offsets: 0 - 0 Buffer contents: gid5179=4 We never shape text again. If we need to left/right trim, we [04] Text run: Bounds: [86,0+40x21] | Ascent: -18 operate directly on the items by modifying the offsets. For Direction: LTR: [00:000-000] Buffer offsets: 0 - 1 each font, we keep an in-memory codepoint to glyph index for Buffer contents: gid77=5|gid104=6 all spacing characters. [05] Text run: Bounds: [126,0+20x21] | Ascent: -18 Last word mark present: 0 We don’t support hyphenation or justification. Direction: LTR: [00:000-000] Buffer offsets: 0 - 0 Buffer contents: gid6515=7 For BiDi reordering we operate directly on the runs, as each Cache Reuse: 1[1]/0 (0/0) run has an embedding level property. DisplayList(0xdcdb2ee0) pixels=2,780 size=300x200: Text: txt:'驩檤 <span color='yellow'>サ捯ひ ろ驚</span>' A run can have any number of sub-runs associated with it, for emphasis marks or rubies. Sample text layout Debug information our itemizer Layouts are cached, as they are expensive, and a change in provides about a text object container attributes can trigger a relayout or reitemize. 13 Text Layout Facts ● We were able to fit in 128 mb devices, where we have only 20-30 mb available for our app. ● Text layout is, by far, the most expensive operation. Smart caching of text layouts helped us reach 30-45 fps when scrolling movie titles: ○ Try to never itemize text a second time. ○ When changing the container dimensions or alignment adjust the layout lines.
Recommended publications
  • Release Notes for X11R6.8.2 the X.Orgfoundation the Xfree86 Project, Inc
    Release Notes for X11R6.8.2 The X.OrgFoundation The XFree86 Project, Inc. 9February 2005 Abstract These release notes contains information about features and their status in the X.Org Foundation X11R6.8.2 release. It is based on the XFree86 4.4RC2 RELNOTES docu- ment published by The XFree86™ Project, Inc. Thereare significant updates and dif- ferences in the X.Orgrelease as noted below. 1. Introduction to the X11R6.8.2 Release The release numbering is based on the original MIT X numbering system. X11refers to the ver- sion of the network protocol that the X Window system is based on: Version 11was first released in 1988 and has been stable for 15 years, with only upwardcompatible additions to the coreX protocol, a recordofstability envied in computing. Formal releases of X started with X version 9 from MIT;the first commercial X products werebased on X version 10. The MIT X Consortium and its successors, the X Consortium, the Open Group X Project Team, and the X.OrgGroup released versions X11R3 through X11R6.6, beforethe founding of the X.OrgFoundation. Therewill be futuremaintenance releases in the X11R6.8.x series. However,efforts arewell underway to split the X distribution into its modular components to allow for easier maintenance and independent updates. We expect a transitional period while both X11R6.8 releases arebeing fielded and the modular release completed and deployed while both will be available as different consumers of X technology have different constraints on deployment. Wehave not yet decided how the modular X releases will be numbered. We encourage you to submit bug fixes and enhancements to bugzilla.freedesktop.orgusing the xorgproduct, and discussions on this server take place on <[email protected]>.
    [Show full text]
  • Open Source License Report on the Product
    OPEN SOURCE LICENSE REPORT ON THE PRODUCT The software included in this product contains copyrighted software that is licensed under the GPLv2, GPLv3, gSOAP Public License, jQuery, PHP License 3.01, FTL, BSD 3-Clause License, Public Domain, MIT License, OpenSSL Combined License, Apache 2.0 License, zlib/libpng License, , . You may obtain the complete corresponding source code from us for a period of three years after our last shipment of this product by sending email to: [email protected] If you want to obtain the complete corresponding source code with a physical medium such as CD-ROM, the cost of physically performing source distribution might be charged. For more details about Open Source Software, refer to eneo website at www.eneo-security.com, the product CD and manuals. GPLv2: u-Boot 2013.07, Linux Kernel 3.10.55, busybox 1.20.2, ethtool 3.10, e2fsprogs 1.41.14, mtd-utils 1.5.2, lzo 2.05, nfs-utils 1.2.7, cryptsetup 1.6.1, udhcpd 0.9.9 GPLv3: pwstrength 2.0.4 gSOAP Public License: gSOAP 2.8.10 jQuery License: JQuery 2.1.1, JQuery UI 1.10.4 PHP: PHP 5.4.4 FTL (FreeType License): freetype 2.4.10 BSD: libtirpc 0.2.3, rpcbind 0.2.0, lighttpd 1.4.32, hdparm 9,45, hostpad 2, wpa_supplicant 2, jsbn 1.4 Public Domain: sqlite 3.7.17 zlib: zlib 1.2.5 MIT:pwstrength 2.0.4, ezxml 0.8.6, bootstrap 3.3.4, jquery-fullscreen 1.1.5, jeditable 1.7.1, jQuery jqGrid 4.6.0, fullcalendar 2.2.0, datetimepicker 4.17.42, clockpicker 0.0.7, dataTables 1.0.2, dropzone 3.8.7, iCheck 1.0.2, ionRangeSlider 2.0.13, metisMenu 2.0.2, slimscroll 1.3.6, sweetalert 2015.11, Transitionize 0.0.2 , switchery 0.0.2, toastr 2.1.0, animate 3.5.0, font-awesome 4.3.0, Modernizr 2.7.1 pace 1.0.0 OpenSSL Combined: openssl 1.0.1h Apache license 2.0: datepicker 1.4.0, mDNSResponder 379.32.1 wish), that you receive source reflect on the original authors' GNU GENERAL PUBLIC code or can get it if you want it, reputations.
    [Show full text]
  • Introduction to Tizen Mobile & Wearable Profile
    Introduction to Tizen Mobile & Wearable Profile Taesoo Jun, Ph.D. @Software Center Samsung Electronics Tizen Overview Tizen... • Is W3C standard-based • Has strong industry support • Is open source project • Covers multiple profiles for mobile for TV Common & Profile-Specific Compliance Rules for printer for wearable • Releasing Profiles • Preparing Profiles for PC • Potential Profiles for camera for IVI 3 Release History Oct. ‘14 Nov. ‘13 2.3 July ‘13 2.2.1 Multi-profile, May ‘13 2.2 Minor Update New Native Feb. ‘13 2.1 Commercial - App. installation in Framework SD card 2.0 Hybrid Ready w/ - Mobile/ Wearable Add-on SDK profile Web/Native, Enhanced UX Apr. ‘12 Web/Native - OpenCL & WebCL - New native - H/W Menu & Back Framework Enhanced - In app purchase subsystem 1.0 key - Native API Security and - UI Customizer Web-centric - Unified SDK for Web Performance Platform & native - WebKit2 - Highest HTML5 Optimization - Tizen Device Web - Hybrid Web/Native API app. - Web UI framework - Systemd Linux kernel Linux kernel Linux kernel 2.6.36 3.0 w/ 3.4 features (e.g., CMA/IOMMU, eMMC 4.5, V4L2) 3.4 4 Tizen Mobile Profile Architecture Overview • Kernel: Linux kernel + device drivers • Native Subsystem: core functionalities for Tizen platform • Web Framework: web environment above Native subsystem • API • Native API: direct access to core functions in mobile profile • Web API: web-style(i.e., JS, markup) access to W3C standard and device functions Web Web Applications API Web Framework Native Native Applications API Native Subsystem Kernel Manufacturer
    [Show full text]
  • The Unicode Cookbook for Linguists: Managing Writing Systems Using Orthography Profiles
    Zurich Open Repository and Archive University of Zurich Main Library Strickhofstrasse 39 CH-8057 Zurich www.zora.uzh.ch Year: 2017 The Unicode Cookbook for Linguists: Managing writing systems using orthography profiles Moran, Steven ; Cysouw, Michael DOI: https://doi.org/10.5281/zenodo.290662 Posted at the Zurich Open Repository and Archive, University of Zurich ZORA URL: https://doi.org/10.5167/uzh-135400 Monograph The following work is licensed under a Creative Commons: Attribution 4.0 International (CC BY 4.0) License. Originally published at: Moran, Steven; Cysouw, Michael (2017). The Unicode Cookbook for Linguists: Managing writing systems using orthography profiles. CERN Data Centre: Zenodo. DOI: https://doi.org/10.5281/zenodo.290662 The Unicode Cookbook for Linguists Managing writing systems using orthography profiles Steven Moran & Michael Cysouw Change dedication in localmetadata.tex Preface This text is meant as a practical guide for linguists, and programmers, whowork with data in multilingual computational environments. We introduce the basic concepts needed to understand how writing systems and character encodings function, and how they work together. The intersection of the Unicode Standard and the International Phonetic Al- phabet is often not met without frustration by users. Nevertheless, thetwo standards have provided language researchers with a consistent computational architecture needed to process, publish and analyze data from many different languages. We bring to light common, but not always transparent, pitfalls that researchers face when working with Unicode and IPA. Our research uses quantitative methods to compare languages and uncover and clarify their phylogenetic relations. However, the majority of lexical data available from the world’s languages is in author- or document-specific orthogra- phies.
    [Show full text]
  • Optical Character Recognition - a Combined ANN/HMM Approach
    Optical Character Recognition - A Combined ANN/HMM Approach Dissertation submitted to the Department of Computer Science Technical University of Kaiserslautern for the fulfillment of the requirements for the doctoral degree Doctor of Engineering (Dr.-Ing.) by Sheikh Faisal Rashid Dean: Prof. Dr. Klaus Schneider Thesis supervisors: Prof. Dr. Thomas Breuel, TU Kaiserslautern Prof. Dr. Andreas Dengel, TU Kaiserslautern Chair of supervisory committee: Prof. Dr. Karsten Berns, TU Kaiserslautern Kaiserslautern, 11 July, 2014 D 386 Abstract Optical character recognition (OCR) of machine printed text is ubiquitously considered as a solved problem. However, error free OCR of degraded (broken and merged) and noisy text is still challenging for modern OCR systems. OCR of degraded text with high accuracy is very important due to many applications in business, industry and large scale document digitization projects. This thesis presents a new OCR method for degraded text recognition by introducing a combined ANN/HMM OCR approach. The approach provides significantly better performance in comparison with state-of-the-art HMM based OCR methods and existing open source OCR systems. In addition, the thesis introduces novel applications of ANNs and HMMs for document image preprocessing and recognition of low resolution text. Furthermore, the thesis provides psychophysical experiments to determine the effect of letter permutation in visual word recognition of Latin and Cursive script languages. HMMs and ANNs are widely employed pattern recognition paradigms and have been used in numerous pattern classification problems. This work presents a simple and novel method for combining the HMMs and ANNs in application to segmentation free OCR of degraded text. HMMs and ANNs are powerful pattern recognition strategies and their combination is interesting to improve current state-of-the-art research in OCR.
    [Show full text]
  • Opentype Postscript Fonts with Unusual Units-Per-Em Values
    Luigi Scarso VOORJAAR 2010 73 OpenType PostScript fonts with unusual units-per-em values Abstract Symbola is an example of OpenType font with TrueType OpenType fonts with Postscript outline are usually defined outlines which has been designed to match the style of in a dimensionless workspace of 1000×1000 units per em Computer Modern font. (upm). Adobe Reader exhibits a strange behaviour with pdf documents that embed an OpenType PostScript font with A brief note about bitmap fonts: among others, Adobe unusual upm: this paper describes a solution implemented has published a “Glyph Bitmap Distribution Format by LuaTEX that resolves this problem. (BDF)” [2] and with fontforge it’s easy to convert a bdf font into an opentype one without outlines. A fairly Keywords complete bdf font is http://unifoundry.com/unifont-5.1 LuaTeX, ConTeXt Mark IV, OpenType, FontMatrix. .20080820.bdf.gz: this Vle can be converted to an Open- type format unifontmedium.otf with fontforge and it Introduction can inspected with showttf, a C program from [3]. Here is an example of glyph U+26A5 MALE AND FEMALE Opentype is a font format that encompasses three kinds SIGN: of widely used fonts: 1. outline fonts with cubic Bézier curves, sometimes Glyph 9887 ( uni26A5) starts at 492 length=17 referred to CFF fonts or PostScript fonts; height=12 width=8 sbX=4 sbY=10 advance=16 2. outline fonts with quadratic Bézier curve, sometimes Bit aligned referred to TrueType fonts; .....*** 3. bitmap fonts. ......** .....*.* Nowadays in digital typography an outline font is almost ..***... the only choice and no longer there is a relevant diUer- .*...*.
    [Show full text]
  • Surviving the TEX Font Encoding Mess Understanding The
    Surviving the TEX font encoding mess Understanding the world of TEX fonts and mastering the basics of fontinst Ulrik Vieth Taco Hoekwater · EuroT X ’99 Heidelberg E · FAMOUS QUOTE: English is useful because it is a mess. Since English is a mess, it maps well onto the problem space, which is also a mess, which we call reality. Similary, Perl was designed to be a mess, though in the nicests of all possible ways. | LARRY WALL COROLLARY: TEX fonts are mess, as they are a product of reality. Similary, fontinst is a mess, not necessarily by design, but because it has to cope with the mess we call reality. Contents I Overview of TEX font technology II Installation TEX fonts with fontinst III Overview of math fonts EuroT X ’99 Heidelberg 24. September 1999 3 E · · I Overview of TEX font technology What is a font? What is a virtual font? • Font file formats and conversion utilities • Font attributes and classifications • Font selection schemes • Font naming schemes • Font encodings • What’s in a standard font? What’s in an expert font? • Font installation considerations • Why the need for reencoding? • Which raw font encoding to use? • What’s needed to set up fonts for use with T X? • E EuroT X ’99 Heidelberg 24. September 1999 4 E · · What is a font? in technical terms: • – fonts have many different representations depending on the point of view – TEX typesetter: fonts metrics (TFM) and nothing else – DVI driver: virtual fonts (VF), bitmaps fonts(PK), outline fonts (PFA/PFB or TTF) – PostScript: Type 1 (outlines), Type 3 (anything), Type 42 fonts (embedded TTF) in general terms: • – fonts are collections of glyphs (characters, symbols) of a particular design – fonts are organized into families, series and individual shapes – glyphs may be accessed either by character code or by symbolic names – encoding of glyphs may be fixed or controllable by encoding vectors font information consists of: • – metric information (glyph metrics and global parameters) – some representation of glyph shapes (bitmaps or outlines) EuroT X ’99 Heidelberg 24.
    [Show full text]
  • License Agreement
    TAGARNO MOVE, FHD PRESTIGE/TREND/UNO License Agreement Version 2021.08.19 Table of Contents Table of Contents License Agreement ................................................................................................................................................ 4 Open Source & 3rd-party Licenses, MOVE ............................................................................................................ 4 Open Source & 3rd-party Licenses, PRESTIGE/TREND/UNO ................................................................................. 4 atk ...................................................................................................................................................................... 5 base-files ............................................................................................................................................................ 5 base-passwd ...................................................................................................................................................... 5 BSP (Board Support Package) ............................................................................................................................ 5 busybox.............................................................................................................................................................. 5 bzip2 .................................................................................................................................................................
    [Show full text]
  • Optimization of Fontconfig Library Optimization of Fontconfig Library
    Michal Srb OPTIMIZATION OF FONTCONFIG LIBRARY OPTIMIZATION OF FONTCONFIG LIBRARY Michal Srb Bachelor's Thesis Spring 2017 Information Technology Oulu University of Applied Sciences ABSTRACT Oulu University of Applied Sciences Degree Programme in Information Technology, Internet Services Author: Michal Srb Title of the bachelor’s thesis: Optimization of Fontconfig Library Supervisor: Teemu Korpela Term and year of completion: Spring 2017 Number of pages: 39 + 1 appendix Fontconfig is a library that manages a database of fonts on Linux systems. The aim of this Bachelor's thesis was to explore options for making it respond faster to application's queries. The library was identified as a bottleneck during the startup of graphical applications. The typical usage of the library by applications was analyzed and a set of standalone benchmarks were created. The library was profiled to identify hot spots and multiple optimizations were applied to it. It was determined that to achieve an optimal performance, a complete rewrite would be necessary. However, that could not be done while staying backward compatible. Nevertheless, the optimizations applied to the existing fontconfig yielded significant performance improvements, up to 98% speedups in benchmarks based on the real-world usage. Keywords: fontconfig, optimization, benchmarking, profiling 3 CONTENTS 1 INTRODUCTION 6 2 BACKGROUND 7 1.1 Motivation 7 1.2 Fontconfig 8 1.2.1 Function 9 1.2.2 Configuration 11 2 ANALYSIS 12 2.1 Main entry functions 12 2.1.1 FcFontMatch 12 2.1.2 FcFontSort 14 2.1.3
    [Show full text]
  • PDF Copy of My Gsoc Proposal
    GSoC Proposal for Haiku Add Haiku Support for new Harfbuzz library ● Full name: Deepanshu Goyal ​ ● Timezone: +0530 ​ ● Email address: [email protected] ​ ● IRC username (freenode.net): digib0y ​ ● Trac username (dev.haiku-os.org): digib0y ​ ● Trac ticket(s) containing patches for Haiku/ Pull requests: ○ https://github.com/haiku/website/pull/26 ○ https://github.com/haiku/website/pull/41 ○ https://github.com/haikuports/haikuports/pull/1204 ○ https://github.com/HaikuArchives/ArtPaint/pull/54 We also had technical discussions over few issues in ArtPaint which you can checkout: https://github.com/HaikuArchives/ArtPaint/issues , I have also commented few lines of code in one the ​ issues which you might be interested in! Apart from these I have submitted a patch to Haiku however most of the work on the patch was already done by a previous contributor . https://dev.haiku-os.org/attachment/ticket/11518/0001-Implemented-BFont-Blocks-added-build-featur e-for-fon.patch ● GitHub (or other public) repository: https://github.com/digib0y/ ​ ● Will you treat Google Summer of Code as full time employment? ​ ​ Yes, I do understand that Google Summer of Code is a full time virtual internship and I have no other commitment to any other internship, job, and exams. ● How many hours per week will you work? I will work for 40-50 hours a week, with give work update on every alternate day to the assigned mentor.. ● List all obligations (and their dates) that may take time away from GSoC (a second job, vacations, classes, ...): One day per week will be an off day, most probably weekend only if the goals for the week has been completed.
    [Show full text]
  • Digitale Typografie
    Digitale Typografie Andreas F. Borchert Universität Ulm 7. Juli 2016 Syllabus 2 Inhalte: • Einführung und historischer Überblick • Von der geometrisch definierten Fläche zum Pixelraster mit einer Einführung in PostScript und MetaPost • Digitale Repräsentierungen von Schriften • Einführung in die Typografie • Ausgewählte Algorithmen und Verfahrenstechniken Was ist Typografie? 3 • »Typography exists to honor content.« (Robert Bringhurst) • »Typografie ist keine Kunst. Typografie ist keine Wissenschaft. Typografie ist Handwerk.« (Hans Peter Willberg) • »Typografie, das ist die Inszenierung einer Mitteilung in der Fläche, so die kürzeste Definition, die ich kenne.« (Erik Spiekermann) • »Good typography therefore is a silent art; not its presence but rather its absence is noticeable.« (Mittelbach and Rowley: The pursuit of quality – How can automated typesetting achieve the highest standards of craft typography?) Wozu dient Typografie? 4 Robert Bringhurst fasst es folgendermaßen zusammen: »[...] typography should perform these services for the reader: I invite the reader into the text; I reveal the tenor and the meaning of the text; I clarify the structure and the order of the text; I link the text with other existing elements; I induce a state of energetic repose, which is the ideal condition for reading.« Was ist digitale Typografie? 5 • »Digital typography is the technology of using computers for the design, preparation, and presentation of documents, in which the graphical elements are organized, positioned, and themselves created under digital control.« (Richard Rubinstein) • »[...] the problem of printing beautiful books had changed from a problem of metallurgy to a problem of optics and then to a problem of computer science. [...] The future of typography depends on the people who know the most about creating patterns of 0s and 1s; it depends on mathematicians and computer scientists.« (Donald E.
    [Show full text]
  • African Fonts and Open Source
    African fonts and Open Source Denis Moyogo Jacquerye September 17th 2008 ATypI ‘o8 Conference St. Petersburg, Russia, September 2008 1 African fonts and Open Source Denis Moyogo Jacquerye African fonts and Open Source This talk is about: ● African Orthographies (relevance, groups, requirements) ● Technologies for them (Unicode, OpenType) ● Implementation ● Raise awareness and interest ● Case for Open Source ATypI ‘o8 Conference St. Petersburg, Russia, September 2008 2 African fonts and Open Source Denis Moyogo Jacquerye Speaker Denis Moyogo Jacquerye ● Computer Scientist and Linguist ● Africanization consultant ● DejaVu Fonts co-leader ● African Network for Localization (ANLoc) ATypI ‘o8 Conference St. Petersburg, Russia, September 2008 3 African fonts and Open Source Denis Moyogo Jacquerye ANLoc African fonts work part of ANLoc project ● Facilitate localization ● Empowering through ICT ● Network of experts ● Sub-projects: Locales, Keyboards, Fonts, Spell checkers, Terminology, Training, Localization software, Policy. ATypI ‘o8 Conference St. Petersburg, Russia, September 2008 4 African fonts and Open Source Denis Moyogo Jacquerye African languages ● Lots of African languages (over 2000) ● 25 spoken by about half ● 80% don't have orthographies ● 20% do! ● Can emulate! ATypI ‘o8 Conference St. Petersburg, Russia, September 2008 5 African fonts and Open Source Denis Moyogo Jacquerye African languages ● Used every day by most ● Education is mostly in European language ● Used in spoken media ● Interest is rising ATypI ‘o8 Conference St. Petersburg,
    [Show full text]