<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
  <meta http-equiv="Content-Type"
 content="text/html; charset=iso-8859-1">
  <meta name="Copyright"
 content="Copyright (c) 2002, International Business Machines Corporation and others. All Rights Reserved.">
  <meta name="Author" content="Eric Mader">
  <meta name="GENERATOR"
 content="Mozilla/4.72 [en] (Windows NT 5.0; U) [Netscape]">
  <title>Readme file for letest and gendata</title>
</head>
<body>
<h2> What are letest and gendata?</h2>
letest is a program you can use to verify that you have built and
installed the ICU LayoutEngine correctly. The test is not comprehensive,
it just verifies that the results of laying out some Devanagari, Arabic
and Thai text are as expected. Once this test has passed, you can use
the ICU LayoutEngine in your application knowing that it has been
correctly installed and that the basic functionality is in place.
<p>gendata is a program that is used by the ICU team to build the
source file testdata.cpp, which contains the expected results of running
letest. Unless you have changed your copy of the LayoutEngine and want
to validate the changes on other platforms, there's no reason for you
to run this program. </p>
<p>(The ICU team first runs a Windows application which uses the ICU
LayoutEngine to display the text that letest uses. Once it has been
verified that the text is displayed correctly, gendata is run to produce
testdata.cpp, and then letest is run on Windows to verify that letest
still works with the new data.) <br>
&nbsp; </p>
<h2> How do I build letest?</h2>
First, you need to build ICU, including the LayoutEngine.
<p>On Windows, the layout project should be listed as a dependency of
all, so layout will build when you build all. If it doesn't for some
reason, just select the layout project in the project toolbar and build
it. </p>
<p>On UNIX systems, you need to add the "--enable-layout=yes" option
when you invoke the runConfigureICU script. When you've done that,
layout should build when you do "make all install" </p>
<p>To build letest on Windows, just open the letest project in
&lt;icu&gt;\source\test\letest and build it. On UNIX systems, connect to
&lt;top-build-dir&gt;/test/letest and do "make all" <br>
&nbsp; </p>
<h2> How do I run letest?</h2>
Before you can run letest, you'll need to get the fonts it uses. For
legal reasons, we can't include them with ICU, but you can download them
from the web. To do this, you'll need access to a computer running
Windows. Here's how to get the fonts:
<p>Download the 1.3 version of the JDK from the<a
 href="http://www.ibm.com/java"> IBM developerWorks Java technology zone</a>
page. From this page, follow the "Tools and products" link on the left
hand side, and then the link for the "IBM Developer Kit for Linux", or
the "IBM Developer Kit for Windows(R), Release 1.3.0". You'll need to
register with them if you haven't downloaded before. Download and
install the "Runtime Environment Package." You'll need two fonts from
this package. If you've let the installer use it's defaults, the fonts
will be in C:\Program Files\IBM\Java13\jre\lib\fonts. The files you want
are "LucidaSansRegular.ttf" and "Thonburi.ttf" Copy these font files to
the directory from which you'll run letest.<br>
</p>
<p>Next is the Hindi font. Go to the&nbsp; NCST site and download&nbsp;<a
 href="http://rohini.ncst.ernet.in/indix/download/font/raghu.ttf">
raghu.ttf</a>. Be sure to look at the&nbsp;<a
 href="http://rohini.ncst.ernet.in/indix/download/font/README"> README</a>
file before you download the font. You can download raghu.ttf into the
directory from which you'll run letest.<br>
</p>
<p>There's still one more font to get, the Code2000 Unicode font.Go to
James Kass' &nbsp;<a href="http://home.att.net/%7Ejameskass/">Unicode
Support In Your Browser</a> page and click on the link that says "Click
Here to download Code2000 shareware demo Unicode font." This will
download a .ZIP file which contains CODE2000.TTF and CODE2000.HTM.
Expand this .ZIP file and put the CODE2000.TTF file in the directory
from which you'll run letest.<br>
</p>
<p><span style="font-weight: bold;">Note:</span> The Code2000 font is
shareware. If you want to use it for longer than a trial period, you
should send a shareware fee to James. Directions for how to do this are
in CODE2000.HTM.</p>
<p>That's it! Now all you have to do is run letest (CTRL+F5 in Visual
C++, or "./letest" in UNIX) If&nbsp; everything's OK you should see
something like this: </p>
<blockquote><tt>Test 0, font = raghu.ttf... passed.</tt> <br>
  <tt>Test 1, font = CODE2000.TTF... passed.</tt> <br>
  <tt>Test 2, font = LucidaSansRegular.ttf... passed.</tt> <br>
  <tt>Test 3, font = Thonburi.ttf... passed.</tt></blockquote>
</body>
</html>
