Re: Features needed for high-end DTP apps



Hi Damon.
I've been working on a design for a DTP-like application as well in
recent weeks. I'd be interested in comments on the quality of the books
you've read.

I'll transcribe some notes I have taken in my own research below. It
repeats some items on your list but may still add something to the
discussion. My preliminary investigation of Pango is as follows (Pango
people please correct where wrong):

NB: When I say planned I'm relaying what I've read not what is an
official Pango maintainers decision...

- Pango is primarily intended for multi-language display in GTK+
widgets. It could be used for other purposes but in speed/quality
trade-offs speed wins because it has to be used for all text drawing
everywhere.

- The Pango line-breaking algorithm is currently simplistic and doesn't
do hyphenation.
	- Line-breaking is language specific ... maybe Pango will
	eventually support modular line-breaking routines?
	- The computational cost of some line breaking routines (TeX?)
	might make it unsuitable for inclusion in Pango?

- Kerning.
	- This may be done at some point (or already), but adding manual
	kerning to this may be unrealistic.

- Vertical text orientation is not done.
	- I think this is planned for some point in time, since it is
	necessary/useful for some languages.

- Full justification and other justification options are not done (w/
capabilities for extending glyphs rather than the spacing as needed for
Arabic, etc...).
	- Planned.

- Arbitrarily shaped text containers. Pango always assumes a rectangular
box for the text.
	- Beyond basic Pango's needs?

- Subpixel positioning is not done.
	- ?

WHAT CAN BE USED?
-----------------
- My impression is that an alternate, 'typographic' PangoLayout must be
created. It could potentially reuse some of the core steps of Pango such
as itemization, boundary resolution and shaping (I'm listing these from
the PS document at http://people.redhat.com/otaylor/ols2001/). It
wouldn't be quite as opaque as PangoLayout current is either.
	- As many details about glyph construction, presentation, etc.
	and related facilities (cursor position, showing selections,
	etc.) should go here.
	- Font conversion/embedding/subsetting should be encapsulated
	*in this area* (I haven't thought it through yet).
- It get the feeling that this will parallel Pango in many ways rather
than extend it ...
- If the goal of a DTP is be able to provide consistent layout and
presentation than each aspect of the layout process must be designed
with versioning in mind. ie. if you change the line-breaking algorithm
between versions, or the leading calculations, etc... you mess up the
work that users have done in previous designs. this suggests that the
layout features should be pluggable so that old layouts can be supported
in new version of the application. another reason for this is that if
files from another application with different assumptions about these
layout parameters are imported, custom routines designed to emulate the
layout of the other application could be used ...

MORE QUESTIONS
--------------
- Font support.
	- I'm not clear on OpenType support - is it available for both Freetype
and Xft rendering systems or is it a separate rendering system from
both?
	- The term rendering system is confusing as well: I think its just a
consistent font system along with its rasterization method (ie. X: X
fonts and old X font rendering, freetype: freetype and bitmap rendering,
Xft: freetype and server-side Xrender rendering, Win32: Windows font
system and Windows rendering ...).

- My understanding of the Pango shaping process is that it takes care of
glyph construction involving things like diacritics, ligatures,
contextual glyphs (ie. Arabic) and Complex Text Language (CTL)
requirements.

- Rendering systems: Different rendering systems will give different
results for shaping, font metrics, etc... what implications will this
have for consistent layout?

- What is a high-quality text layout? what are the main drawbacks to the
following approach?
	- lay out text against some physical space (ie. 4in) using
justification, kerning, etc. of your choice
	- when publishing to a device other than your design device, keep the
same number of glyphs per line, laid out using as near to the same
options as before.
	- ie. fit_glyphs_to_line ()
	- this would prevent differences in the font display from affecting
line-to-line layout, where those differences could be:
		- not an exact font match
		- hinted/non-hinted
		- antialiased or non-antialiased
	- special alignment between rows such as a tab alignment around on a
decimal point would need to be preserved in the new line layout for the
device though...actually more generally tabs would still need to line up
so the fit_glyphs_to_line algorithm would need to be able to take into
account fixed positions which cannot be shifted.

- Where does symmetrical swapping and national numbers fit in with
Pango?


---
Patrick





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