libLASi is a library written by Larry Siden
that provides a C++ stream output interface
( with operator <<
) for creating Postscript documents that can
contain characters from any of the scripts and symbol blocks supported
in Unicode
and by Owen Taylor's Pango layout engine.
The library accomodates right-to-left scripts such as Arabic and Hebrew as easily as
left-to-right scripts. Indic and Indic-derived Complex Text Layout (CTL)
scripts, such as Devanagari, Thai, Lao, and Tibetan are supported to the extent
provided by Pango and by the OpenType fonts installed on your system.
All of this is provided without need for any special configuration or layout calculation
on the programmer's part.
Although the capability to produce Unicode-based multilingual Postscript documents exists in large Open Source application framework libraries such as GTK+, QT, and KDE, libLASi was designed for projects which require the ability to produce Postscript independent of any one application framework.
This document outlines the motivation and strategy employed in the development of LASi.
Up-to-date versions of LASi can now be obtained from http://eyegene.ophthy.med.umich.edu/lasi/
The example programs included with LASi contain Unicode text in various languages. To obtain Open Source and otherwise liberally-licensed fonts required for proper generation of the example Postscript output, please visit Ed Trager's Unicode Font Guide For Free/Libre Open Source Operating Systems.
LASi uses Owen Taylor's Pango text layout engine. Pango itself depends on the glib infrastructure library of the GTK+ toolkit and on the FreeType 2 font handling library.
Almost any modern Linux or similar free *nix operating system will already have the FreeType2 library installed. If you have the Gnome desktop or GTK+-based software like the Gimp installed on your system, then you may be able to use the glib and Pango libraries already present on your system.
If you decide to download glib and Pango, be sure to download "matched" libraries from either the Gnome or GTK+ web site. For example, if you go to the download area for Gnome 2.8, you will find glib-2.4.6.tar.gz and pango-1.6.0.tar.gz. Glib-2.4.6 and pango-1.6.0 are "matched" for building a stable version of Gnome and should thus provide you good results when used with LASi.
As of this writing (2004.12.23), we have documented successful builds of LASi version 1.0.4 using the following combinations of library versions:
LASi should build fine with other version combinations, but we have not bothered to document these.
If you have trouble building LASi, the usual culprits are:
PKG_CONFIG_PATH
.
For example, if FreeType2 is installed in /usr/X11R6/lib
and Pango is installed
in /opt/gnome/lib
, then you might have to execute
"export PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig:/opt/gnome/lib/pkgconfig
" from your shell in order
to get pkg-config and, by extension, the LASi ./configure
script to find these
libraries../configure
script detects one version of a library,
but at link time the linker links against another version. The easiest way to avoid problems is to avoid having
multiple versions present on your machine. If that is not an option, and you have a good idea of what you are
doing, you can play around with /etc/ld.so.conf
and ldconfig
until you get it to work.
Examples are provided in the examples
subdirectory of the software distribution.
The makefiles included with the examples illustrate how to link a program against LASi.
Here is a simple example of what source code using LASi
looks like.
Larry Siden lsiden@gmail.com is the original author of LASi.
The program is now being maintained by Ed Trager ehtrager@umich.edu and Ritu Khanna rituk@umich.edu. Please address correspondance about the software to the maintainers.
My friend, Ed Trager, who first envisioned and motivated me to write LASi, suggested that I assign the name "Lasi" to this project, as "Lasi" is composed of the first two letters of my first name, Larry, followed by the first two letters of my last name, Siden. Since this immediately delighted by own sense of vanity, I had no trouble indulging Ed. Out of concern that the name "Lasi" might invite ridicule by jeolous programming rivals who would no doubt take every opportunity to mock it's connection to the beloved TV canine hero, I changed it's spelling to the post-modern, hi-tech moniker "LASi".