This document describes rough changes of each version and instruction. [0.11] ------ o Id::defoma_id_grep_cache($id, ..., sorttype => $stype, sortkey => $skey) -- New Feature. The order of the result of this function was random before this version, but now it can be outputted in a certain order, if specified by sorttype and sortkey arguments. $stype should be either 'a', 'n' or 'p', which stand for alphabetical order, numeric order and priority order respectively. $skey should be either 'id', 'font', 'type', 'priority', 'category', 'depid', or 'depfont'. It must be set when $stype is 'a' or 'n' but not 'p', in order to specify in which entry you want to sort the result. And here is an example of how $stype = 'p' is used: @index = defoma_id_grep_cache($id, 'font', id => "Foo", sorttype => 'p'); First, all font entries (real, alias and subst entries) whose id is Foo are selected out. Then they are sorted in the same order as defoma decides which font to install when several fonts have the same id. For example, if there are three fonts (A, B and C) with same id Foo for RealName, Alias, and Substituted respectively, font A is the most prior. But if font B is marked as USE through dfontmgr, font B becomes the most prior. NOTE that the result is larger-to-smaller priority order when $stype = s, while smaller-to-larger when $stype = a or n. o defoma-hints --no-question ... -- New Feature. Non-interactive mode. All values are set to default. [0.10] ------ o defoma-app ignore .. -- New command. Remove fonts registered in the from the configuration of the like "defoma-app clean ", and set "ignore' flag to prevent the fonts in the from being registered to the . o defoma-app clean|update .. -- Additional feature. Multiple is allowed. o defoma-user update|reconfigure -- New command. Commands for Userlevel Defoma. o "-u" -- New option for defoma-font,app,id. Switches to Userlevel Defoma mode. o Common::app_readfile($file) -- New function. o Common::readfile($file) -- New function. Read the $file, chomp each of the lines and return in an array. $file must be a relative path from the package specific directory (ROOTDIR/.d) for app_readfile(), and must be a absolute path for readfile(). o Common::app_writefile($file, @lines) -- New function. o Common::writefile($file, @lines) -- New function. Write @lines to the $file. @lines must not contain the terminating "\n". In the same way as app_readfile() and readfile(), $file must be a relative and absolute path for app_writefile() and writefile() respectively. o Common::app_symlink($src, $dest) -- New function. Create a symlink $dest that points to $src. $src must be a absolute path and $dest must be a relative path from the package specific directory (ROOTDIR/.d). This function can be used to create a symlink of a font file in the package specific directory. o Common::app_unlink($file) -- New function. Remove the $file. $file must be a relative path from the package specific directory. o Common::DEFOMA_TEST_DIR, ROOTDIR, HOMEDIR, LOCALE -- New function. These functions behave as constant variables. HOMEDIR and LOCALE are used in Userlevel Defoma: HOMEDIR represents the home directory and LOCALE represents the current locale. o User::defoma_user_update_dotfile($file, $begin, $end, @lines) -- New func. This function is used in Userlevel Defoma. It replaces the content between the two lines specified by $begin and $end of $file, so is useful for the purpose of adding the configuration by defoma to a dotfile which the user might directly modify. $file must be a relative path from HOMEDIR. o $APPINFO -- New variable. This variable is a reference to a hash and is used in the header of a Defoma-configuration scripts in order to describe the additional information and setting. There're currently following keys. - $APPINFO->{require} Specifies the required version of defoma. ex.) $APPINFO->{require} = "0.10.0"; - $APPINFO->{subdirs} Specifies subdirectories under ROOTDIR/.d. They'll be automatically created when defoma-app update is run. ex.) $APPINFO->{subdirs} = ["dirs/fonts", "dirs/CMap"]; ROOTDIR/.d/dirs/fonts and ROOTDIR/.d/dirs/CMap will be created. - $APPINFO->{links} Specifies symlinks that points to a file/directory under ROOTDIR/.d. They'll be automatically created/removed when defoma-app update/purge is run. ex.) $APPINFO->{links} = ["dirs/CMap /usr/share/ghostscript/CMap", "dirs/fonts /usr/share/ghostscript/fonts"]; Symlink files /usr/share/ghostscript/{CMap|fonts} that point to ROOTDIR/.d/dirs/{CMap|fonts} will be created. [0.9] ----- o Common::get_xlfd_of_font(, type => , face => ) -- New func. Returns an array of XLFDs of . must be 'min', 'normal', or 'max' and controls the amount of returned XLFDs. Specifying makes is return XLFDs of the specified of . [0.8] ----- o defoma-font register-one -- New command. o defoma-font unregister-one -- New command. o defoma-font reregister-one -- New command. o defoma-font purge-one -- New command. register/unregister/reregister/purge one font with hints and category described in the hintfile. o - Duplication of font definition is now permitted. It means several begin..end blocks for one font are allowed. Only the last begin..end block is interpreted. - Declaration of `category' specification is now permitted. It means you can describe hints of fonts which belong to several category in one hintfile like this: category truetype begin ... end category type1 begin ... end - obsolete It declares the font as obsoleted. The font is re-registered to `obsoleted' category with no hints so that the font is never used in defoma. This function is really useful in the situation that a maintainer wants some fonts that are ordinally described in a hintfile to be unregistered in the next version. Removing the begin..end blocks of these fonts doesn't cause these fonts to be unregistered, while just adding this `obsolete' line for each of these fonts does. ex.) category type1 begin ... end begin ... end begin ... end obsolete obsolete In this example, fontA and fontB will be obsoleted. o DEFOMA_TEST_DIR Ordinally this environmental variable are always referred by deciding the top directory. Now it is only referred when -d is specified. o /usr/local/share/defoma/scripts When -d is specified, defoma looks for this directory for defoma-configuration scripts. [0.7] ----- o Font::defoma_font_get_failed(, ) -- New function. it is used to get a hash which contains the applications for which the specified is failed to be registered as its keys, and the return value as its values. o Id::defoma_id_set(, , , ) -- New function. o Id::defoma_id_unset(, , ) -- New function. these are used to set/unset the flag (install and exclude) and to force the specified id/font to be installed and excluded. o /usr/bin/defoma-id -- New function. it is supposed to be invoked from dfontmgr, which is a GUI frontend of defoma. It was going to be installed in defoma 0.7.0, but not realized. o /usr/bin/dh_installdefoma -- New function. it is a debhelper program for defoma-ized font and application packages. Now only you have to do to defoma-ize a font package is to create a hintfile and name it as defoma-hints, and invoke dh_installdefoma in debian/rules. In the same way, you can defoma-ize a application package only by creating a defoma-configuration script and name it as defoma, and invoke dh_installdefoma in debian/rules. [0.6] ----- o Common::weight_ascii2integer() -- New function. o Common::weight_a2i() -- abbreviation for weight_ascii2integer() it is used to convert a string representing weight of a font into an integer value, so is useful for comparing. ex.) if (weight_a2i('Medium') < weight_a2i($h->{Weight})) { # the font is bolder. } elsif (weight_a2i('Medium') > weight_a2i($h->{Weight})) { # the font is lighter. } o Transform -- New hinttype. It controls transformation of a face of a font like boldization and slantization. If you want to prevent a font from being boldized and/or slanted, you should add "Transform = NotBoldize" and/or "Transform = NotSlant" to the hintfile, and reregister the font. You should add "Transform = Boldize" and/or "Transform = Slant" to the hintfile to make the font boldized and/or slanted. Note that the transformation of a font is supported only by a few applications, so this hinttype has no effect for most of the configurations. The default action taken by a acript of an application supporting the transformation when it is not set is not determined.