What s new since TEX?

Similar documents
Understanding the æsthetics of math typesetting

Experiences with micro-typographic extensions of pdftex in practice

BBN ANG 183 Typography Text colour: vertical and horizontal spacing

Nastaleeq: A challenge accepted by Omega

PLATYPUS FUNCTIONAL REQUIREMENTS V. 2.02

Language Information in Structured Documents: A Model for Mark-up and Rendering

32 TUGboat, Volume 36 (2015), No. 1

Infrastructure for High-Quality Arabic

Tex with Unicode Characters

How to use text. Adding a text frame

from The Elements of Typographic Style by Robert Bringhurst, page 171

Experiences typesetting OpenType math

OpenType Math Illuminated

Math typesetting in TEX: The good, the bad, the ugly

Multilingual mathematical e-document processing

How to Use L A T E X Properly for Papers and Theses

DESIGNING THE PAGE FOUNDATIONS OF DIGITAL DESIGN. Layout composition, the grid and typography. Prof. Eva Machauf

Font-specific issues in pdftex

A very long title with deep neural networks variants applied on five databases and solving many problems occuring there.

Text. Text metrics. There are some important metrics that we must consider when working with text. Figure 4-1 shows the basics.

Font Forum. TUGboat, Volume 21 (2000), No Thai fonts Werner Lemberg

Typesetting CJK languages with Omega

Some NT S thoughts. Hans Hagen. The next stage. Some NT S thoughts 1

Thai Printing Support in FOSS

ISO/IEC JTC/1 SC/2 WG/2 N2312. ISO/IEC JTC/1 SC/2 WG/2 Universal Multiple-Octet Coded Character Set (UCS)

CSS3 Text Extensions. 1 Summary. 2 Contents. Michel Suignard. Microsoft Corporation

WHAT IS BFA NEW MEDIA?

Line breaking and page breaking

Liberate TEX: Progress on Building a New TEX-Language Interpreter

The l3galley package Galley code

NCCTOOLS. Release 3.5

L A TEX3 Project Team

OpenType Font by Harsha Wijayawardhana UCSC

Adobe InDesign CS3. Biotics Faculties. Teaching Plan (60 Days) BIOTICS.IN Typesetting Training for Professionals. Compiled by

proj 5 A/B kerning & introduction to the grid

Font, Typeface, Typeface Family. Selected Typographical Variables

Typographic. Alphabet. Book. Interactive PDF of typographic rules & terms YOU NEED TO KNOW. Home. Table of Contents

Identity Guidelines 2018

Unicode definition list

WATER (No kerning) WATER (Automatic Kerning) WATER (Manual Kerning).

252 TUGboat, Volume 39 (2018), No. 3

Requirements for Japanese text layout and XSL-FO

Transliteration of Tamil and Other Indic Scripts. Ram Viswanadha Unicode Software Engineer IBM Globalization Center of Competency, California, USA

CSCM10 Research Methodology A Taster of L A TEX

WYSIWYG Systems. CSCM10 Research Methodology A Taster of L A TEX WYSIWYM. Advantages/Disadvantages of WYSIWYG Systems.

Page Layout Design min

Putting type on a page without incorporating typographic principles is merely word processing. Terry Rydberg, Author Exploring InDesign 3

PROBLEM SOLVING AND OFFICE AUTOMATION. A Program consists of a series of instruction that a computer processes to perform the required operation.

This is a stylish eased slab designed for use in books. It can be loosened a bit for text, or tightened a bit for headers. But, it works quite well

Math Typesetting and Authoring

A multidimensional approach to typesetting

Formatting Text. 05_Format rd July 2000

The impnattypo package

WYSIWYG Systems. CSCM10 Research Methodology Lecture 4 (11/2/16): A Taster of L A TEX WYSIWYM. Advantages/Disadvantages of WYSIWYG Systems

The hanging package. Contents. 1 Introduction

The Unicode Standard Version 6.1 Core Specification

48 TUGboat, Volume 36 (2015), No. 1

Thomas Wolff

CSCM10 Research Methodology A Taster of L A TEX

The Text group on the Text Box Tools contextual menu contains three options:

Towards An Operational (La)TEX Package Supporting Optical Scaling of Dynamic Mathematical Symbols

Rendering in Dzongkha

Script for Interview about LATEX and Friends

C L A S S 2 T Y P O G R A P H Y. FOUNDATIONS OF GRAPHIC DESIGN MW 8 a.m.

uptex Unicode version of ptex with CJK extensions

Ooma & Ooma Telo Style Guide

AFP Support for TrueType/Open Type Fonts and Unicode

anatomy cap height x-height baseline descender ligature finial terminal ascender spine small capital uppercase counter cross bar lowercase

LESSON 13: LANGUAGE TRANSLATION

Visual Debugging in TEX Part 1: The Story

NAME afm2pl convert AFM font metrics to TeX pl font metrics

PUBLISHER 2016 LINDA MUCHOW ALEXANDRIA TECHNICAL AND COMMUNITY COLLEGE 1601 JEFFERSON STREET, ALEXANDRIA, MN 56308

Introduction to Normalization and Modern Collation

New Font Offerings: Cochineal, Nimbus15, LibertinusT1Math

Keyboard Version 1.1 designed with Manual version 1.2, June Prepared by Vincent M. Setterholm, Logos Research Systems, Inc.

The Adobe-Japan1-6 Character Collection

GRAPHIC WEB DESIGNER PROGRAM

Square cells: an array cooking lesson

CS 134 Midterm Fall 2006

Without savetrees. An Example Document

Layman s comments on the encoding proposal Khitan small script

USER GUIDE: Typefitter Automation for print, online and mobile

TUGboat, Volume 33 (2012), No

L E S S O N 2 Background

Crimes Against Typography. Shela Vang 13 images Collaborative Partner: Daha Lee 12 images

My Mathematical Thesis

Frontend guide. Everything you need to know about HTML, CSS, JavaScript and DOM. Dejan V Čančarević

Abstracts without papers

The making of Beautiful A method for designing type for Jordanian students

CS 134 Midterm Fall 2006

PDF and Accessibility

Designing & Developing Pan-CJK Fonts for Today

Fabricator Font File Spec. David Rutten (Robert McNeel & Associates) February 26, 2015

Estonian language support for babel

TYPO GRA PHY THE ANATOMY OF TYPE A BRIEF HISTORY OF TYPOGRAPHY WHAT IS YOUR TYPE ACTUALLY SAYING? OPEN FONT DISCUSSION

Princeton University. Computer Science 217: Introduction to Programming Systems. Data Types in C

Extensible Rendering for Complex Writing Systems

7 TYPOGRAPHIC DESIGN Lesson overview

Perceptive Document Composition

Pan-Unicode Fonts. Text Layout Summit 2007 Glasgow, July 4-6. Ben Laenen, DejaVu Fonts

Transcription:

Based on Frank Mittelbach Guidelines for Future TEX Extensions Revisited TUGboat 34:1, 2013 Raphael Finkel CS Department, UK November 20, 2013

All versions of TEX Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 2 / 13

Original TEX and early successors TEX 82: 7-bit fonts, English-based hyphenation Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 3 / 13

Original TEX and early successors TEX 82: 7-bit fonts, English-based hyphenation TEX/L A TEX 3.0 (1989): 8-bit fonts, minimal adjustments. Currently at version 3.1415926. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 3 / 13

Original TEX and early successors TEX 82: 7-bit fonts, English-based hyphenation TEX/L A TEX 3.0 (1989): 8-bit fonts, minimal adjustments. Currently at version 3.1415926. ptex: Japanese (Kanji: 16-bit fonts) and vertical typesetting Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 3 / 13

Original TEX and early successors TEX 82: 7-bit fonts, English-based hyphenation TEX/L A TEX 3.0 (1989): 8-bit fonts, minimal adjustments. Currently at version 3.1415926. ptex: Japanese (Kanji: 16-bit fonts) and vertical typesetting ML-TEX: \charsubdef lets characters with diacritics to be treated as a single character, solving bad hyphenation. No longer needed given newer fonts containing most accented characters. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 3 / 13

Original TEX and early successors TEX 82: 7-bit fonts, English-based hyphenation TEX/L A TEX 3.0 (1989): 8-bit fonts, minimal adjustments. Currently at version 3.1415926. ptex: Japanese (Kanji: 16-bit fonts) and vertical typesetting ML-TEX: \charsubdef lets characters with diacritics to be treated as a single character, solving bad hyphenation. No longer needed given newer fonts containing most accented characters. N T S (2000): re-implementation of TEX in Java. But not as modular or extensible as hoped. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 3 / 13

Original TEX and early successors TEX 82: 7-bit fonts, English-based hyphenation TEX/L A TEX 3.0 (1989): 8-bit fonts, minimal adjustments. Currently at version 3.1415926. ptex: Japanese (Kanji: 16-bit fonts) and vertical typesetting ML-TEX: \charsubdef lets characters with diacritics to be treated as a single character, solving bad hyphenation. No longer needed given newer fonts containing most accented characters. N T S (2000): re-implementation of TEX in Java. But not as modular or extensible as hoped. ɛ-tex (1994): extensions now supported by all other engines: tracing facilities, mixed-direction typesetting, more registers, generalized \orphanpenalty, spacing of last line in paragraph. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 3 / 13

Original TEX and early successors TEX 82: 7-bit fonts, English-based hyphenation TEX/L A TEX 3.0 (1989): 8-bit fonts, minimal adjustments. Currently at version 3.1415926. ptex: Japanese (Kanji: 16-bit fonts) and vertical typesetting ML-TEX: \charsubdef lets characters with diacritics to be treated as a single character, solving bad hyphenation. No longer needed given newer fonts containing most accented characters. N T S (2000): re-implementation of TEX in Java. But not as modular or extensible as hoped. ɛ-tex (1994): extensions now supported by all other engines: tracing facilities, mixed-direction typesetting, more registers, generalized \orphanpenalty, spacing of last line in paragraph. Ω/Λ: Unicode input instead of 8-bit input. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 3 / 13

Newer engines, still in use pdftex/pdfl A TEX: embedded Type-1 fonts, virtual fonts, hyper-links, compression, micro-typography. Dominant in practical use. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 4 / 13

Newer engines, still in use pdftex/pdfl A TEX: embedded Type-1 fonts, virtual fonts, hyper-links, compression, micro-typography. Dominant in practical use. X TEX/X L A TEX (2012): more font technologies (OpenType, Graphite, Apple) without configuring TEX font metrics. Unicode (UTF-8) input and font-glyph references. Supports the bidirectional (bidi) algorithm. E E Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 4 / 13

Newer engines, still in use pdftex/pdfl A TEX: embedded Type-1 fonts, virtual fonts, hyper-links, compression, micro-typography. Dominant in practical use. X TEX/X L A TEX (2012): more font technologies (OpenType, Graphite, Apple) without configuring TEX font metrics. Unicode (UTF-8) input and font-glyph references. Supports the bidirectional (bidi) algorithm. E E LuaTEX/LuaL A TEX (2007): pdftex with embedded Lua scripting engine. Provides callbacks to hook into or replace underlying TEX typesetting engines. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 4 / 13

Remaining problems Researchers have identified various problems that require resolution; the rest of this talk covers some of them. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 5 / 13

Line breaking Last line of paragraph uses normal spacing, even if the previous line is loose or tight. Workaround (ɛ-tex and successors): \lastlinefit Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 6 / 13

Line breaking Last line of paragraph uses normal spacing, even if the previous line is loose or tight. Workaround (ɛ-tex and successors): \lastlinefit Tallest object in a line determines line height or depth, spreading lines even if they would fit. Theoretical workaround: LuaTEX. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 6 / 13

Line breaking Last line of paragraph uses normal spacing, even if the previous line is loose or tight. Workaround (ɛ-tex and successors): \lastlinefit Tallest object in a line determines line height or depth, spreading lines even if they would fit. Theoretical workaround: LuaTEX. Cannot adjust paragraph shape based on position on the page, because of the order in which TEX processes text. Theoretical workaround: multi-pass formatting. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 6 / 13

Line breaking Last line of paragraph uses normal spacing, even if the previous line is loose or tight. Workaround (ɛ-tex and successors): \lastlinefit Tallest object in a line determines line height or depth, spreading lines even if they would fit. Theoretical workaround: LuaTEX. Cannot adjust paragraph shape based on position on the page, because of the order in which TEX processes text. Theoretical workaround: multi-pass formatting. Consecutive hyphenated lines: can discourage two, but not 3 or more. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 6 / 13

Line breaking Last line of paragraph uses normal spacing, even if the previous line is loose or tight. Workaround (ɛ-tex and successors): \lastlinefit Tallest object in a line determines line height or depth, spreading lines even if they would fit. Theoretical workaround: LuaTEX. Cannot adjust paragraph shape based on position on the page, because of the order in which TEX processes text. Theoretical workaround: multi-pass formatting. Consecutive hyphenated lines: can discourage two, but not 3 or more. Line quality is tight, decent, loose, or very loose, and TEX tries not to change much from line to line. But only 4 categories are insufficient. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 6 / 13

Line breaking Last line of paragraph uses normal spacing, even if the previous line is loose or tight. Workaround (ɛ-tex and successors): \lastlinefit Tallest object in a line determines line height or depth, spreading lines even if they would fit. Theoretical workaround: LuaTEX. Cannot adjust paragraph shape based on position on the page, because of the order in which TEX processes text. Theoretical workaround: multi-pass formatting. Consecutive hyphenated lines: can discourage two, but not 3 or more. Line quality is tight, decent, loose, or very loose, and TEX tries not to change much from line to line. But only 4 categories are insufficient. Rivers of white, identical word repeated in same place on successive lines. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 6 / 13

Micro-typography Characters bounding white space should affect inter-word spacing. Unresolved. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 7 / 13

Micro-typography Characters bounding white space should affect inter-word spacing. Unresolved. Tracking: increasing/decreasing inter-letter spaces within a word. (in pdftex) Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 7 / 13

Micro-typography Characters bounding white space should affect inter-word spacing. Unresolved. Tracking: increasing/decreasing inter-letter spaces within a word. (in pdftex) Expansion: changing the width of glyphs. (in pdftex) Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 7 / 13

Micro-typography Characters bounding white space should affect inter-word spacing. Unresolved. Tracking: increasing/decreasing inter-letter spaces within a word. (in pdftex) Expansion: changing the width of glyphs. (in pdftex) Hanging punctuation: punctuation at the end of a line should protrude slightly. (in pdftex and luatex) Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 7 / 13

Microtypography Features of package microtype Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 8 / 13

Page layout No support for complex float management, such as floats across columns or formatting depending on environment. Not well understood. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 9 / 13

Page layout No support for complex float management, such as floats across columns or formatting depending on environment. Not well understood. No support for baseline-to-baseline spacing, because TEX uses instead a concept of interline glue. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 9 / 13

Page layout No support for complex float management, such as floats across columns or formatting depending on environment. Not well understood. No support for baseline-to-baseline spacing, because TEX uses instead a concept of interline glue. No support for grid-based design, which would require that baseline positions be predictable. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 9 / 13

Page layout No support for complex float management, such as floats across columns or formatting depending on environment. Not well understood. No support for baseline-to-baseline spacing, because TEX uses instead a concept of interline glue. No support for grid-based design, which would require that baseline positions be predictable. Consecutive penalties treated as min, so adding an explicit penalty to prevent a break doesn t work if there is an implicit small penalty (for instance, to discourage an orphan). Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 9 / 13

Fonts Originally, TEX fonts provide few characteristics. Type-1 fonts do provide more information, and OpenType fonts do, too; these characteristics are used by X TEX and luatex. E Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 10 / 13

Fonts Originally, TEX fonts provide few characteristics. Type-1 fonts do provide more information, and OpenType fonts do, too; these characteristics are used by X TEX and luatex. E Encoding standardization: TEX requires that every font place the same glyph at each code point. OK for 7 bits. For 8 bits, L A TEX has internal character encoding. Now one should use Unicode (Ω, LuaTEX, X TEX). E Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 10 / 13

Fonts Originally, TEX fonts provide few characteristics. Type-1 fonts do provide more information, and OpenType fonts do, too; these characteristics are used by X TEX and luatex. E Encoding standardization: TEX requires that every font place the same glyph at each code point. OK for 7 bits. For 8 bits, L A TEX has internal character encoding. Now one should use Unicode (Ω, LuaTEX, X TEX). Ligatures and kerning tables should be language-specific, not just font-specific. Example: ffl may not be ligated in German. Workaround (pdftex): suppress all ligatures starting with a given character. E Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 10 / 13

Mathematics No double accents, under-accents, control over placement of equation numbers. Workaround: AMS macros. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 11 / 13

Mathematics No double accents, under-accents, control over placement of equation numbers. Workaround: AMS macros. No way to adjust spacing rules. Solution: LuaTEX. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 11 / 13

Mathematics No double accents, under-accents, control over placement of equation numbers. Workaround: AMS macros. No way to adjust spacing rules. Solution: LuaTEX. Sub-formulas are typeset (boxed) in natural width even if contained in a stretchable formula, and they cannot cross lines. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 11 / 13

Mathematics No double accents, under-accents, control over placement of equation numbers. Workaround: AMS macros. No way to adjust spacing rules. Solution: LuaTEX. Sub-formulas are typeset (boxed) in natural width even if contained in a stretchable formula, and they cannot cross lines. No control over line-breaking in formulas. Solution: breqn package for L A TEX. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 11 / 13

TEX as a programming language TEX has limited programming constructs and it works by expansion (it s a macro language), making it very difficult to program. Solution: the expl3 package provides a comfortable programming environment. It s impossible to access and manipulate internal data structures. Solution: LuaTEX. The mouth leads to the stomach, not the reverse. Mouth: token parsing and manipulation Stomach: box generation and manipulation Once tokens are in boxes and glue, they cannot become tokens again. It would be better to have an intermediate data structure: character data plus attributes, like an abstract syntax tree in a compiler. Solution: LuaTEX. Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 12 / 13

Advice Use the L A TEX enhancements on whatever underlying TEX engine you choose. Use pdfl A TEX unless you need Unicode input. If you need Unicode input, use lual A TEX unless you need bidirectional output. If you need bidirectional output, use X L A TEX with the bidi package. Use the microtype package. No parameters needed. E Raphael Finkel (CS Department, UK) What s new since TEX? November 20, 2013 13 / 13