# Setup #### Create a clean directory for roboto: ```bash mkdir -p $HOME/roboto-src cd $HOME/roboto-src ``` #### Download the code and dependencies: ```bash git clone https://github.com/google/roboto.git git clone https://github.com/behdad/fonttools.git git clone https://github.com/robofab-developers/robofab.git git clone https://github.com/typesupply/feaTools.git git clone https://github.com/typemytype/booleanOperations.git ``` download [Cython](http://cython.org/#download) and extract it into the current directory. On Ubuntu, Cython can also be downloaded and installed via: ```bash sudo apt-get install cython ``` ##### For OTF generation: ```bash git clone https://github.com/typesupply/ufo2fdk.git ``` To build the FDK yourself: ```bash git clone https://github.com/adobe-type-tools/afdko.git ``` download the latest version of Python 2.7 [here](https://www.python.org/downloads/) and extract it into the current directory. If you're not building the FDK yourself, download the pre-built version [here](http://www.adobe.com/devnet/opentype/afdko.html) and unzip it into the current directory. ##### For TTF generation, on Ubuntu: ```bash sudo apt-get install fontforge python-fontforge ``` ##### For post-production: ```bash git clone https://code.google.com/p/noto/ git clone https://github.com/rougier/freetype-py.git ``` download the latest tarball release of HarfBuzz [here](http://www.freedesktop.org/wiki/Software/HarfBuzz/) and extract it into the **home** directory as `$HOME/harfbuzz` (alternatively, you can download the latest source from GitHub via `git clone https://github.com/behdad/harfbuzz.git`). #### Install dependencies: You can install the necessary modules at the sytem level: ```bash cd fonttools sudo python setup.py install cd ../robofab sudo python setup.py install cd ../feaTools sudo python setup.py install cd ../Cython-0.22 sudo python setup.py install cd ../booleanOperations/cppWrapper sudo python setup.py build_ext --inplace cp pyClipper.so ../Lib/booleanOperations cd .. sudo python setup.py install cd .. ``` Or set `$PYTHONPATH` locally before running `make`: ```bash PYTHONPATH="$PYTHONPATH:$HOME/roboto-src/fonttools/Lib" PYTHONPATH="$PYTHONPATH:$HOME/roboto-src/robofab/Lib" PYTHONPATH="$PYTHONPATH:$HOME/roboto-src/feaTools/Lib" PYTHONPATH="$PYTHONPATH:$HOME/roboto-src/booleanOperations/Lib" ``` ##### For OTF generation: ```bash cd ufo2fdk sudo python setup.py install cd .. ``` Or: ```bash PYTHONPATH="$PYTHONPATH:$HOME/roboto-src/ufo2fdk/Lib" ``` If building the FDK yourself, follow the instructions in `afdko/FDK/FDK Build Notes.txt`: ```bash cd Python-2.7 ./configure --prefix=AFDKOPythonBuild make install mv AFDKOPythonBuild ../afdko/FDK/Tools/osx/Python cd ../fonttools sudo ../afdko/FDK/Tools/osx/Python/bin/python setup.py install cd ../afdko/FDK/Tools/Programs ./BuildAll.sh cd ../.. ./FinishInstallOSX cd ../.. ``` Otherwise: ```bash cd FDK ./FinishInstallOSX cd .. ``` In either case, use whatever install scripts and directory (`FinishInstall[OSX|Linux|Windows.cmd]`, `BuildAll[.sh|Linux.sh|.cmd]`, `FDK/Tools/[osx|linux|win]`) are appropriate for your platform (more detailed information can be found in `FDK/Read_Me_First.html`). ##### For post-production: ```bash cd $HOME/harfbuzz ./configure make sudo make install cd $HOME/roboto-src/ ``` Install python modules to system: ```bash cd noto sudo python setup.py install cd ../freetype-py sudo python setup.py install cd .. ``` Or: ```bash PYTHONPATH="$PYTHONPATH:$HOME/roboto-src/noto" PYTHONPATH="$PYTHONPATH:$HOME/roboto-src/freetype-py" ``` #### Running the toolchain: ```bash cd roboto make ``` ## Dependencies The Roboto build toolchain depends on: - FontTools (https://github.com/behdad/fonttools) - RoboFab (https://github.com/robofab-developers/robofab) - NumPy and SciPy (http://www.numpy.org/) - feaTools (https://github.com/typesupply/feaTools.git), for feature handling. - BooleanOperations (https://github.com/typemytype/booleanOperations), for glyph overlap removal. - (requires Cython to install: http://cython.org/) ## OTF Generation OTF generation depends on: - ufo2fdk (https://github.com/typesupply/ufo2fdk) - Open-source portions of the AFDKO (https://github.com/adobe-type-tools/afdko/releases) The AFDKO from GitHub can be time consuming to setup. It is easier to just use the variety which includes closed-source tools (http://www.adobe.com/devnet/opentype/afdko.html), though these closed-source portions are not used to build Roboto. ## TTF Generation TTF generation depends on: - FontForge (https://github.com/fontforge/fontforge) Whose Python interface should be availabe on Ubuntu by default via `apt-get install fontforge python-fontforge`. ## Post-Production Post-production scripts (most of the code outside of the `fontbuild` directory, e.g. for testing output) depend on: - The nototools module, installed as part of Noto (https://code.google.com/p/noto/) - (Noto subsequently depends on HarfBuzz: https://github.com/behdad/harfbuzz) - freetype-py (https://github.com/rougier/freetype-py)