Merge branch 'master' into feature/redesign-7144
Conflicts: library/Icinga/Web/Menu.php public/css/icinga/menu.less
This commit is contained in:
commit
903219b302
|
@ -1 +1,5 @@
|
|||
# Exclude files related to git when generating an archive
|
||||
.git* export-ignore
|
||||
|
||||
# Normalize puppet manifests' line endings to LF on checkin and prevent conversion to CRLF when the files are checked out
|
||||
.vagrant-puppet/* eol=lf
|
||||
|
|
|
@ -1,46 +1,12 @@
|
|||
# Exclude all hidden files
|
||||
.*
|
||||
# But not .gitignore, .gitattributes, .vagrant-puppet, .htaccess and .gitkeep
|
||||
!.gitignore
|
||||
!.gitattributes
|
||||
!.vagrant-puppet
|
||||
!public/.htaccess
|
||||
!packages/rhel/usr/share/icingaweb/public/.htaccess
|
||||
!public/.htaccess.in
|
||||
!.gitkeep
|
||||
|
||||
build/
|
||||
# Except those related to git and vagrant
|
||||
!.git*
|
||||
!.vagrant-puppet/*
|
||||
|
||||
development/
|
||||
|
||||
# ./configure output
|
||||
config.log
|
||||
autom4te.cache
|
||||
autoscan*
|
||||
config.status
|
||||
Makefile
|
||||
|
||||
# cmd tester
|
||||
modules/test/bin/extcmd_test
|
||||
|
||||
# misc test output
|
||||
test/php/library/Icinga/Protocol/Statusdat/.cache
|
||||
|
||||
# Generated API documentation
|
||||
doc/api
|
||||
|
||||
# Enabled modules
|
||||
# Exclude enabled modules
|
||||
config/enabledModules/
|
||||
|
||||
# User preferences
|
||||
config/preferences/*.ini
|
||||
|
||||
# Application logfiles
|
||||
var/log/*.log
|
||||
|
||||
# Packaging
|
||||
/debian
|
||||
*.tar.gz
|
||||
*.komodoproject
|
||||
|
||||
|
||||
# Exclude application log files
|
||||
var/log/*
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
* -crlf
|
158
Makefile.in
158
Makefile.in
|
@ -1,158 +0,0 @@
|
|||
SHELL=/bin/sh
|
||||
|
||||
PACKAGE_TARNAME=@PACKAGE_TARNAME@
|
||||
PACKAGE_NAME=@PACKAGE_NAME@
|
||||
PACKAGE_VERSION=@PACKAGE_VERSION@
|
||||
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
bindir=@bindir@
|
||||
|
||||
HTTPD_CONFIG_PATH=@httpd_config_path@
|
||||
ICINGAWEB_CONFIG_PATH=@icingaweb_config_path@
|
||||
ICINGAWEB_LOG_PATH=@icingaweb_log_path@
|
||||
|
||||
INSTALL=@INSTALL@
|
||||
INSTALL_OPTS=@INSTALL_OPTS@
|
||||
INSTALL_OPTS_WEB=@INSTALL_OPTS_WEB@
|
||||
|
||||
default:
|
||||
@echo "IcingaWeb make targets: "
|
||||
@printf "%b" " -install:\t\t\tInstall the application and overwrite configs\n"
|
||||
@printf "%b" " -update:\t\t\tInstall the application without touching the configs\n"
|
||||
@printf "%b" " -install-apache-config:\tInstall the apache configuration\n"
|
||||
|
||||
#
|
||||
# Installs the whole application w\o httpd configurations
|
||||
#
|
||||
install: install-config install-basic ensure-writable-folders install-cli
|
||||
|
||||
#
|
||||
# Install icingacli bin
|
||||
#
|
||||
|
||||
install-cli:
|
||||
$(INSTALL) -m 755 -d $(INSTALL_OPTS) $(bindir)
|
||||
$(INSTALL) -m 755 $(INSTALL_OPTS) "./bin/icingacli" $(bindir)/icingacli;
|
||||
|
||||
#
|
||||
# Installs the whole application w\o configuration
|
||||
#
|
||||
install-basic: install-static-files install-runtime-dirs ensure-writable-folders
|
||||
|
||||
#
|
||||
# Updates only the application
|
||||
#
|
||||
update: install-application
|
||||
|
||||
#
|
||||
# Removes files created by ./configure
|
||||
#
|
||||
clean:
|
||||
if [ -f ./Makefile ];then \
|
||||
rm ./Makefile; \
|
||||
fi; \
|
||||
if [ -f ./etc/apache/icingaweb.conf ];then \
|
||||
rm ./etc/apache/icingaweb.conf; \
|
||||
fi;
|
||||
|
||||
#
|
||||
# Installs/copies all static files (executables, scripts, html, etc)
|
||||
#
|
||||
install-static-files: install-application copy-web-files-public copy-web-files-modules
|
||||
|
||||
#
|
||||
# Installs all configuration files
|
||||
#
|
||||
install-config:
|
||||
$(INSTALL) -m 755 $(INSTALL_OPTS_WEB) -d $(DESTDIR)$(ICINGAWEB_CONFIG_PATH)
|
||||
|
||||
@dirs=`cd ./config ; find . -mindepth 1 -type d `;\
|
||||
for dir in $$dirs; do \
|
||||
$(INSTALL) -m 755 $(INSTALL_OPTS_WEB) -d $(DESTDIR)$(ICINGAWEB_CONFIG_PATH)/"$$dir"; \
|
||||
done;
|
||||
|
||||
@files=`cd ./config ; find . -mindepth 1 -type f \
|
||||
-and ! -name ".*" -and ! -name "*.in"`; \
|
||||
for file in $$files; do \
|
||||
$(INSTALL) -m 644 $(INSTALL_OPTS_WEB) "./config/$$file" $(DESTDIR)$(ICINGAWEB_CONFIG_PATH)/"$$file"; \
|
||||
done
|
||||
|
||||
|
||||
#
|
||||
# Installs runtime directories like the application cache
|
||||
#
|
||||
install-runtime-dirs:
|
||||
$(INSTALL) -m 755 $(INSTALL_OPTS_WEB) -d $(DESTDIR)$(prefix)/application/cache
|
||||
|
||||
#
|
||||
# Copies the tests into the installation directory
|
||||
#
|
||||
install-tests: copy-folder-tests
|
||||
|
||||
#
|
||||
# Install configurations for apache2
|
||||
#
|
||||
install-apache-config:
|
||||
$(INSTALL) -m 755 -d $(INSTALL_OPTS) $(DESTDIR)$(HTTPD_CONFIG_PATH)
|
||||
$(INSTALL) -m 644 $(INSTALL_OPTS) "./etc/apache/icingaweb.conf" $(DESTDIR)$(HTTPD_CONFIG_PATH)/icingaweb.conf;
|
||||
|
||||
#
|
||||
# Installs the php files to the prefix
|
||||
#
|
||||
install-application: copy-web-files-application copy-web-files-library install-cli
|
||||
|
||||
#
|
||||
# Rule for copying folders and containing files (arbitary types), hidden files are excluded
|
||||
#
|
||||
copy-folder-%:
|
||||
$(INSTALL) -m 755 $(INSTALL_OPTS) -d $(DESTDIR)$(prefix)/$*
|
||||
|
||||
@dirs=`find ./$* -mindepth 1 -type d `;\
|
||||
for dir in $$dirs; do \
|
||||
$(INSTALL) -m 755 $(INSTALL_OPTS) -d $(DESTDIR)$(prefix)/"$$dir"; \
|
||||
done;
|
||||
|
||||
@files=`find ./$* -mindepth 1 -type f \
|
||||
-and ! -name ".*"`; \
|
||||
for file in $$files; do \
|
||||
$(INSTALL) -m 644 $(INSTALL_OPTS) "$$file" $(DESTDIR)$(prefix)/"$$file"; \
|
||||
done
|
||||
|
||||
|
||||
ensure-writable-folders:
|
||||
$(INSTALL) -m 775 $(INSTALL_OPTS_WEB) -d $(DESTDIR)$(prefix)/var/
|
||||
$(INSTALL) -m 775 $(INSTALL_OPTS_WEB) -d $(DESTDIR)$(ICINGAWEB_LOG_PATH)
|
||||
chmod -R 775 $(DESTDIR)$(ICINGAWEB_CONFIG_PATH)
|
||||
|
||||
|
||||
#
|
||||
# Rule for copying only php, *html, js and ini files. Hidden files are ignored
|
||||
#
|
||||
copy-web-files-%:
|
||||
$(INSTALL) -m 755 $(INSTALL_OPTS) -d $(DESTDIR)$(prefix)/$*
|
||||
|
||||
@dirs=`find ./$* -mindepth 1 -type d `;\
|
||||
for dir in $$dirs; do \
|
||||
$(INSTALL) -m 755 $(INSTALL_OPTS_WEB) -d $(DESTDIR)$(prefix)/"$$dir"; \
|
||||
done;
|
||||
|
||||
@files=`find ./$* -mindepth 1 -type f \
|
||||
-name "*.php" -or -name "*.ini" -or -name "*.*html" \
|
||||
-or -name "*.js" -or -name "*.css" -or -name "*.less" \
|
||||
-or -name "*.otf" -or -name "*.ttf" -or -name "*.otf" \
|
||||
-or -name "*.svg" -or -name "*.woff" -or -name "*.png" \
|
||||
-and ! -name ".*"`; \
|
||||
for file in $$files; do \
|
||||
$(INSTALL) -m 644 $(INSTALL_OPTS_WEB) "$$file" $(DESTDIR)$(prefix)/"$$file"; \
|
||||
done
|
||||
|
||||
#
|
||||
# Create release or snapshot tarball
|
||||
#
|
||||
# TODO: Use git-archive
|
||||
# create-tarball:
|
||||
# @./bin/make-tarball --prefix $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)/
|
||||
#
|
||||
# create-tarball-nightly:
|
||||
# ./bin/make-tarball --prefix $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-`date +%Y%m%d`-`git rev-parse --short HEAD`/
|
|
@ -1,84 +0,0 @@
|
|||
AC_DEFUN([AC_USER_GUESS],[
|
||||
$2=$3
|
||||
for x in $1; do
|
||||
AC_MSG_CHECKING([if user $x exists])
|
||||
AS_IF([ $GREP -q "^$x:" /etc/passwd ],
|
||||
[ AC_MSG_RESULT([found]); $2=$x ; break],
|
||||
[ AC_MSG_RESULT([not found]) ])
|
||||
done
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_CHECK_PHP_MODULE],[
|
||||
for x in $1;do
|
||||
AC_MSG_CHECKING([if php has $x module])
|
||||
AS_IF([ php -m | $GREP -iq "^$x$" ],
|
||||
[ AC_MSG_RESULT([found]) ],
|
||||
[ AC_MSG_ERROR([not found])])
|
||||
done
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_CHECK_PHP_VERSION],[
|
||||
AC_MSG_CHECKING([if php has at least version $1.$2.$3])
|
||||
AS_IF([ test $1 -le `php -r 'echo PHP_MAJOR_VERSION;'` && \
|
||||
test $2 -le `php -r 'echo PHP_MINOR_VERSION;'` && \
|
||||
test $3 -le `php -r 'echo PHP_RELEASE_VERSION;'`],
|
||||
[ AC_MSG_RESULT([PHP version is correct])],
|
||||
[ AC_MSG_ERROR([You need at least PHP version $1.$2.$3])])
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_CHECK_PHP_INCLUDE],[
|
||||
AC_MSG_CHECKING([if PHP runtime dependency '$2' is available])
|
||||
AS_IF([ php -r 'require "$1";' ],
|
||||
[ AC_MSG_RESULT([PHP runtime dependency fulfilled])],
|
||||
[ AC_MSG_ERROR([PHP runtime dependency '$2' is missing])])
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_GROUP_GUESS],[
|
||||
$2=$3
|
||||
for x in $1; do
|
||||
AC_MSG_CHECKING([if group $x exists])
|
||||
AS_IF([ $GREP -q "^$x:" /etc/group ],
|
||||
[ AC_MSG_RESULT([found]); $2=$x ; break],
|
||||
[ AC_MSG_RESULT([not found]) ])
|
||||
done
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_CHECK_BIN], [
|
||||
AC_PATH_PROG([$1],[$2],[not found])
|
||||
|
||||
AS_IF([ test "XX${$1}" == "XXnot found" ],
|
||||
[ AC_MSG_WARN([binary $2 not found in PATH]) ])
|
||||
|
||||
test "XX${$1}" == "XXnot found" && $1=""
|
||||
])
|
||||
|
||||
AC_DEFUN([AC_PATH_GUESS], [
|
||||
$2=$3
|
||||
for x in $1; do
|
||||
AC_MSG_CHECKING([if path $x exists])
|
||||
AS_IF([test -d $x],
|
||||
[AC_MSG_RESULT([found]); $2=$x; break],
|
||||
[AC_MSG_RESULT([not found])]
|
||||
)
|
||||
done
|
||||
])
|
||||
|
||||
# ICINGA_CHECK_DBTYPE(DBTYPE, ARGUMENT_NAME)
|
||||
# ------------------------------------------
|
||||
AC_DEFUN([ICINGA_CHECK_DBTYPE], [
|
||||
AC_MSG_CHECKING([Testing database type for $2])
|
||||
AS_IF(echo "$1" | $GREP -q "^\(my\|pg\)sql$",
|
||||
AC_MSG_RESULT([OK ($1)]),
|
||||
AC_MSG_ERROR([$1])
|
||||
)
|
||||
])
|
||||
|
||||
# ICINGA_CHECK_BACKENDTYPE(BACKENDTYPE, ARGUMENT_NAME)
|
||||
# ------------------------------------------
|
||||
AC_DEFUN([ICINGA_CHECK_BACKENDTYPE], [
|
||||
AC_MSG_CHECKING([Testing backend type for $2])
|
||||
AS_IF(echo "$1" | $GREP -q "^\(ido\|statusdat\|livestatus\)$",
|
||||
AC_MSG_RESULT([OK ($1)]),
|
||||
AC_MSG_ERROR([$1])
|
||||
)
|
||||
])
|
|
@ -25,9 +25,9 @@ class PreferenceController extends BasePreferenceController
|
|||
public static function createProvidedTabs()
|
||||
{
|
||||
return array(
|
||||
'general' => new Tab(
|
||||
'preferences' => new Tab(
|
||||
array(
|
||||
'title' => 'General settings',
|
||||
'title' => t('Preferences'),
|
||||
'url' => Url::fromPath('/preference')
|
||||
)
|
||||
)
|
||||
|
@ -51,6 +51,6 @@ class PreferenceController extends BasePreferenceController
|
|||
$form->handleRequest();
|
||||
|
||||
$this->view->form = $form;
|
||||
$this->getTabs()->activate('general');
|
||||
$this->getTabs()->activate('preferences');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -29,44 +29,6 @@ class ApplicationConfigForm extends Form
|
|||
*/
|
||||
public function createElements(array $formData)
|
||||
{
|
||||
$languages = array();
|
||||
foreach (Translator::getAvailableLocaleCodes() as $language) {
|
||||
$languages[$language] = $language;
|
||||
}
|
||||
|
||||
$this->addElement(
|
||||
'select',
|
||||
'global_language',
|
||||
array(
|
||||
'label' => t('Default Language'),
|
||||
'required' => true,
|
||||
'multiOptions' => $languages,
|
||||
'description' => t(
|
||||
'Select the language to use by default. Can be overwritten by a user in his preferences.'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$tzList = array();
|
||||
foreach (DateTimeZone::listIdentifiers() as $tz) {
|
||||
$tzList[$tz] = $tz;
|
||||
}
|
||||
|
||||
$this->addElement(
|
||||
'select',
|
||||
'global_timezone',
|
||||
array(
|
||||
'label' => t('Default Application Timezone'),
|
||||
'required' => true,
|
||||
'multiOptions' => $tzList,
|
||||
'description' => t(
|
||||
'Select the timezone to be used as the default. User\'s can set their own timezone if'
|
||||
. ' they like to, but this is the timezone to be used as the default setting .'
|
||||
),
|
||||
'value' => date_default_timezone_get()
|
||||
)
|
||||
);
|
||||
|
||||
$this->addElement(
|
||||
'text',
|
||||
'global_modulePath',
|
||||
|
|
|
@ -7,10 +7,12 @@ namespace Icinga\Form;
|
|||
use Exception;
|
||||
use DateTimeZone;
|
||||
use Icinga\Application\Logger;
|
||||
use Icinga\Authentication\Manager;
|
||||
use Icinga\User\Preferences;
|
||||
use Icinga\User\Preferences\PreferencesStore;
|
||||
use Icinga\Util\TimezoneDetect;
|
||||
use Icinga\Util\Translator;
|
||||
use Icinga\Web\Controller\ControllerTabCollector;
|
||||
use Icinga\Web\Form;
|
||||
use Icinga\Web\Notification;
|
||||
use Icinga\Web\Request;
|
||||
|
@ -41,7 +43,6 @@ class PreferenceForm extends Form
|
|||
public function init()
|
||||
{
|
||||
$this->setName('form_config_preferences');
|
||||
$this->setSubmitLabel(t('Save Changes'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -76,7 +77,6 @@ class PreferenceForm extends Form
|
|||
*/
|
||||
public function save()
|
||||
{
|
||||
$this->store->load(); // Necessary for patching existing preferences
|
||||
$this->store->save($this->preferences);
|
||||
return $this;
|
||||
}
|
||||
|
@ -88,9 +88,11 @@ class PreferenceForm extends Form
|
|||
*/
|
||||
public function onSuccess(Request $request)
|
||||
{
|
||||
$this->preferences = new Preferences($this->store->load());
|
||||
|
||||
$webPreferences = $this->preferences->get('icingaweb', array());
|
||||
foreach ($this->getValues() as $key => $value) {
|
||||
if ($value === null) {
|
||||
if ($value === null || $value === 'autodetect') {
|
||||
if (isset($webPreferences[$key])) {
|
||||
unset($webPreferences[$key]);
|
||||
}
|
||||
|
@ -103,8 +105,12 @@ class PreferenceForm extends Form
|
|||
Session::getSession()->user->setPreferences($this->preferences);
|
||||
|
||||
try {
|
||||
$this->save();
|
||||
Notification::success(t('Preferences successfully saved'));
|
||||
if ($this->getElement('btn_submit_preferences')->isChecked()) {
|
||||
$this->save();
|
||||
Notification::success(t('Preferences successfully saved'));
|
||||
} else {
|
||||
Notification::success(t('Preferences successfully saved for the current session'));
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
Logger::error($e);
|
||||
Notification::error($e->getMessage());
|
||||
|
@ -118,9 +124,17 @@ class PreferenceForm extends Form
|
|||
*/
|
||||
public function onRequest(Request $request)
|
||||
{
|
||||
$values = $this->preferences->get('icingaweb', array());
|
||||
$values['browser_language'] = false === isset($values['language']);
|
||||
$values['local_timezone'] = false === isset($values['timezone']);
|
||||
$auth = Manager::getInstance();
|
||||
$values = $auth->getUser()->getPreferences()->get('icingaweb');
|
||||
|
||||
if (! isset($values['language'])) {
|
||||
$values['language'] = 'autodetect';
|
||||
}
|
||||
|
||||
if (! isset($values['timezone'])) {
|
||||
$values['timezone'] = 'autodetect';
|
||||
}
|
||||
|
||||
$this->populate($values);
|
||||
}
|
||||
|
||||
|
@ -130,72 +144,40 @@ class PreferenceForm extends Form
|
|||
public function createElements(array $formData)
|
||||
{
|
||||
$languages = array();
|
||||
$languages['autodetect'] = sprintf(t('Browser (%s)', 'preferences.form'), $this->getLocale());
|
||||
foreach (Translator::getAvailableLocaleCodes() as $language) {
|
||||
$languages[$language] = $language;
|
||||
}
|
||||
|
||||
$tzList = array();
|
||||
$tzList['autodetect'] = sprintf(t('Browser (%s)', 'preferences.form'), $this->getDefaultTimezone());
|
||||
foreach (DateTimeZone::listIdentifiers() as $tz) {
|
||||
$tzList[$tz] = $tz;
|
||||
}
|
||||
|
||||
$this->addElement(
|
||||
'checkbox',
|
||||
'browser_language',
|
||||
array(
|
||||
'ignore' => true,
|
||||
'required' => true,
|
||||
'autosubmit' => true,
|
||||
'value' => true,
|
||||
'label' => t('Use your browser\'s language suggestions')
|
||||
)
|
||||
);
|
||||
|
||||
$useBrowserLanguage = isset($formData['browser_language']) ? $formData['browser_language'] == 1 : true;
|
||||
$languageSelection = $this->createElement(
|
||||
'select',
|
||||
'language',
|
||||
array(
|
||||
'required' => false === $useBrowserLanguage,
|
||||
'required' => true,
|
||||
'label' => t('Your Current Language'),
|
||||
'description' => t('Use the following language to display texts and messages'),
|
||||
'multiOptions' => $languages,
|
||||
'value' => substr(setlocale(LC_ALL, 0), 0, 5)
|
||||
)
|
||||
);
|
||||
if ($useBrowserLanguage) {
|
||||
$languageSelection->setAttrib('disabled', 'disabled');
|
||||
}
|
||||
$this->addElement($languageSelection);
|
||||
|
||||
$this->addElement(
|
||||
'checkbox',
|
||||
'local_timezone',
|
||||
array(
|
||||
'ignore' => true,
|
||||
'required' => true,
|
||||
'autosubmit' => true,
|
||||
'value' => true,
|
||||
'label' => t('Use your local timezone')
|
||||
)
|
||||
);
|
||||
|
||||
$useLocalTimezone = isset($formData['local_timezone']) ? $formData['local_timezone'] == 1 : true;
|
||||
$timezoneSelection = $this->createElement(
|
||||
'select',
|
||||
'timezone',
|
||||
array(
|
||||
'required' => false === $useLocalTimezone,
|
||||
'required' => true,
|
||||
'label' => t('Your Current Timezone'),
|
||||
'description' => t('Use the following timezone for dates and times'),
|
||||
'multiOptions' => $tzList,
|
||||
'value' => $this->getDefaultTimezone()
|
||||
)
|
||||
);
|
||||
if ($useLocalTimezone) {
|
||||
$timezoneSelection->setAttrib('disabled', 'disabled');
|
||||
}
|
||||
$this->addElement($timezoneSelection);
|
||||
|
||||
$this->addElement(
|
||||
'checkbox',
|
||||
|
@ -205,6 +187,43 @@ class PreferenceForm extends Form
|
|||
'label' => t('Use benchmark')
|
||||
)
|
||||
);
|
||||
|
||||
$this->addElement(
|
||||
'submit',
|
||||
'btn_submit_preferences',
|
||||
array(
|
||||
'ignore' => true,
|
||||
'label' => t('Save to the Preferences'),
|
||||
'decorators' => array(
|
||||
'ViewHelper',
|
||||
array('HtmlTag', array('tag' => 'div'))
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$this->addElement(
|
||||
'submit',
|
||||
'btn_submit_session',
|
||||
array(
|
||||
'ignore' => true,
|
||||
'label' => t('Save for the current Session'),
|
||||
'decorators' => array(
|
||||
'ViewHelper',
|
||||
array('HtmlTag', array('tag' => 'div'))
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
$this->addDisplayGroup(
|
||||
array('btn_submit_preferences', 'btn_submit_session'),
|
||||
'submit_buttons',
|
||||
array(
|
||||
'decorators' => array(
|
||||
'FormElements',
|
||||
array('HtmlTag', array('tag' => 'div', 'class' => 'control-group'))
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -221,4 +240,15 @@ class PreferenceForm extends Form
|
|||
return date_default_timezone_get();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the preferred locale based on the given HTTP header and the available translations
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function getLocale()
|
||||
{
|
||||
$locale = Translator::getPreferredLocaleCode($_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
||||
return $locale;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
authentication.ini
|
||||
config.ini
|
||||
modules/monitoring/backends.ini
|
||||
modules/monitoring/instances.ini
|
||||
resources.ini
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
; authentication.ini
|
||||
;
|
||||
; Each section listed in this configuration represents a backend used to authenticate users. The backend configurations
|
||||
; must define a resource referring to a configured database or LDAP connection in the INI file resources.ini.
|
||||
;
|
||||
; The backends will be processed from top to bottom using the first backend for authentication which reports that
|
||||
; the user trying to log in is available.
|
||||
|
||||
[autologin]
|
||||
backend = autologin
|
||||
;
|
||||
; If you want to strip the domain
|
||||
; strip_username_regexp = /\@[^$]+$/
|
||||
|
||||
[internal_ldap_authentication]
|
||||
@ldap_auth_disabled@
|
||||
backend = ldap
|
||||
resource = internal_ldap
|
||||
user_class = @ldap_user_objectclass@
|
||||
user_name_attribute = @ldap_attribute_username@
|
||||
group_base_dn = @ldap_group_base_dn@
|
||||
group_attribute = @ldap_group_attribute@
|
||||
group_member_attribute = @ldap_group_member_attribute@
|
||||
group_class = @ldap_group_class@
|
||||
|
||||
[internal_db_authentication]
|
||||
@internal_auth_disabled@
|
||||
backend = db
|
||||
resource = internal_db
|
|
@ -1,41 +0,0 @@
|
|||
[global]
|
||||
timezone = "Europe/Berlin"
|
||||
|
||||
; Contains the directories that will be searched for available modules. Modules that
|
||||
; don't exist in these directories can still be symlinked in the module folder, but
|
||||
; won't show up in the list of disabled modules
|
||||
; modulePath = "/vagrant/modules:/usr/share/icingaweb/modules"
|
||||
|
||||
[logging]
|
||||
enable = true
|
||||
; Writing to a Stream
|
||||
type = "file"
|
||||
; Write data to the following file
|
||||
target = "@icingaweb_log_path@/icingaweb.log"
|
||||
; Write data to a PHP stream
|
||||
;target = "php://output"
|
||||
|
||||
; Writing to the System Log
|
||||
;type = "syslog"
|
||||
; Prefix all syslog messages generated with the string "icingaweb"
|
||||
;application = "icingaweb"
|
||||
;facility = "LOG_USER"
|
||||
|
||||
level = 1
|
||||
; The default level is WARNING, which means that only events of this level and
|
||||
; above will be tracked. Level numbers descend in order of importance where
|
||||
; ERROR (0) is the most important level and DEBUG (3) is the least important
|
||||
; level:
|
||||
;
|
||||
; ERROR = 0 - Error: error conditions
|
||||
; WARNING = 1 - Warning: warning conditions
|
||||
; INFO = 2 - Informational: informational messages
|
||||
; DEBUG = 3 - Debug: debug messages
|
||||
|
||||
[preferences]
|
||||
; Use INI file storage to save preferences to a local disk
|
||||
type = "ini"
|
||||
|
||||
; Use database storage to save preferences in either a MySQL or PostgreSQL database
|
||||
;type = db
|
||||
;resource = icingaweb-mysql
|
|
@ -1 +0,0 @@
|
|||
Enabled modules shall be symlinked here.
|
|
@ -1,4 +0,0 @@
|
|||
# Use given CA file
|
||||
TLS_REQCERT demand
|
||||
TLS_CACERT @prefix@/config/ssl/cacerts/trusted.crt
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
# This config file will allow TLS-based LDAP connections ignoring
|
||||
# unknown certificates
|
||||
TLS_REQCERT never
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
[membership-set1]
|
||||
backend = groupX
|
||||
users = icingaadmin,tgelf
|
||||
groups = admin,users
|
||||
|
||||
[membership-set2]
|
||||
backend = groupY
|
||||
users = icingaadmin
|
||||
groups = support1,support2
|
|
@ -1,19 +0,0 @@
|
|||
[localdb]
|
||||
@ido_enabled@
|
||||
type = ido
|
||||
resource = "ido"
|
||||
|
||||
[locallive]
|
||||
@livestatus_enabled@
|
||||
type = livestatus
|
||||
resource = livestatus
|
||||
|
||||
[localfile]
|
||||
@statusdat_enabled@
|
||||
type = statusdat
|
||||
resource = statusdat
|
||||
|
||||
;[localfailsafe]
|
||||
;enabled=false
|
||||
;type = combo
|
||||
;backends = localdb, locallive, localfile
|
|
@ -1,2 +0,0 @@
|
|||
[security]
|
||||
protected_customvars = "*pw*,*pass*,community"
|
|
@ -1,2 +0,0 @@
|
|||
[icinga]
|
||||
path = "@icinga_commandpipe@"
|
|
@ -1,11 +0,0 @@
|
|||
[test1]
|
||||
users = icingaadmin,root,tgelf
|
||||
groups = support2,support2
|
||||
permission_1 = monitoring, monitoring/log
|
||||
permission_2 = monitoring/command/all
|
||||
|
||||
[test2]
|
||||
users = root
|
||||
groups = admin
|
||||
permission_2 = test/permission/1, test/permission/2
|
||||
permission_3 = test/permission/15, test/permission/7
|
|
@ -1,55 +0,0 @@
|
|||
; resources.ini
|
||||
;
|
||||
; The configuration file *resources.ini* contains data sources that
|
||||
; can be referenced in other configurations. This allows you to manage
|
||||
; all connections to SQL databases in one single place, avoiding the need
|
||||
; to edit several different configuration files, when the connection
|
||||
; information of a resource change.
|
||||
;
|
||||
; Each section represents a resource, with the section name being the
|
||||
; identifier used to reference this certain section. Depending on the
|
||||
; resource type, each section contains different properties. The property
|
||||
; *type* defines the resource type and thus how the properties are going to
|
||||
; be interpreted. Currently only the resource type *db* is available.
|
||||
|
||||
|
||||
[internal_db]
|
||||
type = db
|
||||
db = @internal_db_type@
|
||||
host = @internal_db_host@
|
||||
port = @internal_db_port@
|
||||
password = @internal_db_password@
|
||||
username = @internal_db_user@
|
||||
dbname = @internal_db_name@
|
||||
|
||||
[ido]
|
||||
type = db
|
||||
db = @ido_db_type@
|
||||
host = @ido_host@
|
||||
port = @ido_port@
|
||||
password = @ido_password@
|
||||
username = @ido_user@
|
||||
dbname = @ido_db_name@
|
||||
|
||||
[statusdat]
|
||||
type = statusdat
|
||||
status_file = @statusdat_file@
|
||||
object_file = @objects_cache_file@
|
||||
|
||||
[livestatus]
|
||||
type = livestatus
|
||||
socket = @livestatus_socket@
|
||||
|
||||
[internal_ldap]
|
||||
type = ldap
|
||||
hostname = @ldap_host@
|
||||
port = @ldap_port@
|
||||
root_dn = "@ldap_rootdn@"
|
||||
bind_dn = "@ldap_binddn@"
|
||||
bind_pw = @ldap_bindpass@
|
||||
|
||||
[logfile]
|
||||
type = file
|
||||
filename = "@icingaweb_log_path@/icingaweb.log"
|
||||
fields = "/^(?<datetime>[0-9]{4}(-[0-9]{2}){2}T[0-9]{2}(:[0-9]{2}){2}(\\+[0-9]{2}:[0-9]{2})?) - (?<loglevel>[A-Za-z]+) - (?<message>.*)$/"
|
||||
; format: PCRE
|
|
@ -1,16 +0,0 @@
|
|||
[test1]
|
||||
users = "user1"
|
||||
groups = "no-such-group"
|
||||
name = "monitoring/filter"
|
||||
restriction = "hostgroup=lalala&service_description=*ping*"
|
||||
|
||||
[test2]
|
||||
users = "user2"
|
||||
name = "monitoring/filter"
|
||||
restriction = "hostgroup=kunden*&service_description=*ping*"
|
||||
|
||||
[test3]
|
||||
users = "user3"
|
||||
name = "monitoring/filter"
|
||||
restriction = "hostgroup=kunden*&service_description=*ping-ping*"
|
||||
|
448
configure.ac
448
configure.ac
|
@ -1,448 +0,0 @@
|
|||
# -*- Autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ([2.61])
|
||||
AC_INIT([IcingaWeb2], [1.0.0], [info@icinga.org])
|
||||
AC_PREFIX_DEFAULT(/usr/local/icingaweb)
|
||||
|
||||
if test "x$prefix" = "xNONE" ; then
|
||||
installDir="/usr/local/icingaweb"
|
||||
prefix=$installDir
|
||||
else
|
||||
installDir=$prefix
|
||||
fi
|
||||
|
||||
# Checks for programs.
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_GREP
|
||||
AC_PROG_SED
|
||||
|
||||
# Check for php
|
||||
AC_ARG_VAR([PHP],[php cli binary])
|
||||
AC_CHECK_PHP_INCLUDE([Zend/Application.php],[Zend Framework])
|
||||
AC_CHECK_PHP_VERSION([5],[3],[0])
|
||||
AC_CHECK_BIN([PHP], [php])
|
||||
|
||||
# Checks for libraries.
|
||||
AC_CHECK_PHP_MODULE([sockets json])
|
||||
|
||||
#
|
||||
# Configuration files
|
||||
#
|
||||
AC_ARG_WITH([icingaweb_config_path],
|
||||
AS_HELP_STRING([--with-icingaweb-config-path=PATH], [Configuration path for icinga web (default $prefix/config)]),
|
||||
icingaweb_config_path=$withval,
|
||||
icingaweb_config_path=$prefix/config
|
||||
)
|
||||
|
||||
#
|
||||
# Log files
|
||||
#
|
||||
AC_ARG_WITH([icingaweb_log_path],
|
||||
AS_HELP_STRING([--with-icingaweb-log-path=PATH], [Log path for icinga web (default $prefix/var/log)]),
|
||||
icingaweb_log_path=$withval,
|
||||
icingaweb_log_path=$prefix/var/log
|
||||
)
|
||||
|
||||
#
|
||||
# Users for webfiles
|
||||
#
|
||||
|
||||
AC_ARG_WITH([web_user],
|
||||
AS_HELP_STRING([--with-web-user=USER], [username for web writable files (default www-data)]),
|
||||
web_user=$withval,
|
||||
AC_USER_GUESS([www wwwrun www-data apache httpd nobody],[web_user],[www-data])
|
||||
)
|
||||
|
||||
AC_ARG_WITH([web_group],
|
||||
AS_HELP_STRING([--with-web-group=GROUP], [group for web writable files (default www-data)]),
|
||||
web_group=$withval,
|
||||
AC_GROUP_GUESS([www www-data apache httpd nogroup nobody],[web_group], [www-data])
|
||||
)
|
||||
|
||||
AC_ARG_WITH([web_path],
|
||||
AS_HELP_STRING([--with-web-path=PATH], [web sub path (default /icingaweb)]),
|
||||
web_path=$withval,
|
||||
web_path=/icingaweb
|
||||
)
|
||||
|
||||
AC_ARG_WITH([httpd_config_path],
|
||||
AS_HELP_STRING([--with-httpd-config-path=PATH], [Include folder apache2 (default /etc/apache2/conf.d)]),
|
||||
httpd_config_path=$withval,
|
||||
httpd_config_path=AC_PATH_GUESS([/etc/httpd/conf.d /etc/apache2/conf-available /etc/apache2/conf.d /etc/apache/conf.d], [httpd_config_path], [/etc/apache2/conf.d])
|
||||
)
|
||||
|
||||
#
|
||||
# Users and groups for installation
|
||||
#
|
||||
|
||||
AC_ARG_WITH([bin_user],
|
||||
AS_HELP_STRING([--with-bin-user=USER], [user for all other files (default root)]),
|
||||
bin_user=$withval,
|
||||
bin_user=root
|
||||
)
|
||||
|
||||
AC_ARG_WITH([bin_group],
|
||||
AS_HELP_STRING([--with-bin-group=GROUP], [group for all other files (default bin)]),
|
||||
bin_group=$withval,
|
||||
bin_group=bin
|
||||
)
|
||||
|
||||
#
|
||||
# Internal database setup
|
||||
#
|
||||
|
||||
AC_ARG_WITH([internal_db_type],
|
||||
AS_HELP_STRING([--with-internal-db-type=TYPE], [database type to use for internal database (default mysql, supported: pgsql, mysql)]),
|
||||
internal_db_type=$withval,
|
||||
internal_db_type=mysql
|
||||
)
|
||||
|
||||
ICINGA_CHECK_DBTYPE($internal_db_type, [--with-internal-db-type])
|
||||
|
||||
AC_ARG_WITH([internal_db_name],
|
||||
AS_HELP_STRING([--with-internal-db-name=NAME], [database name to use for internal database (default icingaweb)]),
|
||||
internal_db_name=$withval,
|
||||
internal_db_name=icingaweb
|
||||
)
|
||||
|
||||
AC_ARG_WITH([internal_db_host],
|
||||
AS_HELP_STRING([--with-internal-db-host=HOST], [database host to use for internal database (default localhost)]),
|
||||
internal_db_host=$withval,
|
||||
internal_db_host=localhost
|
||||
)
|
||||
|
||||
AC_ARG_WITH([internal_db_port],
|
||||
AS_HELP_STRING([--with-internal-db-port=PORT], [database port to use for internal database (default: 3306 for mysql, 5432 for pgsql)]),
|
||||
internal_db_port=$withval,
|
||||
internal_db_port=db_default_port
|
||||
)
|
||||
|
||||
AC_ARG_WITH([internal_db_password],
|
||||
AS_HELP_STRING([--with-internal-db-password=PASS], [database pass to use for internal database (default icingaweb)]),
|
||||
internal_db_password=$withval,
|
||||
internal_db_password=icingaweb
|
||||
)
|
||||
|
||||
AC_ARG_WITH([internal_db_user],
|
||||
AS_HELP_STRING([--with-internal-db-user=USER], [database user to use for internal database (default icingaweb)]),
|
||||
internal_db_user=$withval,
|
||||
internal_db_user=icingaweb
|
||||
)
|
||||
|
||||
#
|
||||
# Authorization method
|
||||
#
|
||||
|
||||
AC_ARG_WITH([internal_authentication],
|
||||
AC_HELP_STRING([--with-internal-authentication], [use the internal database for authentication (default: yes)]),
|
||||
internal_authentication=$withval,
|
||||
internal_authentication=yes
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ldap_authentication],
|
||||
AC_HELP_STRING([--with-ldap-authentication], [use a ldap server for authentication (default: no)]),
|
||||
ldap_authentication=$withval,
|
||||
ldap_authentication=no
|
||||
)
|
||||
|
||||
#
|
||||
# LDAP Authorization
|
||||
#
|
||||
|
||||
AC_ARG_WITH([ldap_host],
|
||||
AS_HELP_STRING([--with-ldap-host=HOST], [host to use for authentication via ldap (default localhost)]),
|
||||
ldap_host=$withval,
|
||||
ldap_host=localhost
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ldap_port],
|
||||
AS_HELP_STRING([--with-ldap-port=PORT], [port to use for authentication via ldap (default 389)]),
|
||||
ldap_port=$withval,
|
||||
ldap_port=389
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ldap_binddn],
|
||||
AS_HELP_STRING([--with-ldap-binddn=DN], [dn to use for retrieving user information via ldap (default cn=admin, cn=config)]),
|
||||
ldap_binddn=$withval,
|
||||
ldap_binddn=["cn=admin,cn=config"]
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ldap_bindpass],
|
||||
AS_HELP_STRING([--with-ldap-bindpass=PASS], [password to use for retrieving user information via ldap (default admin)]),
|
||||
ldap_bindpass=$withval,
|
||||
ldap_bindpass=["admin"]
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ldap_rootdn],
|
||||
AS_HELP_STRING([--with-ldap-rootdn=LDAP_ATTRIBUTE], [root dn to use for user lookup (default ou=people, dc=icinga, dc=org)]),
|
||||
ldap_rootdn=$withval,
|
||||
ldap_rootdn=["ou=people, dc=icinga, dc=org"]
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ldap_user_objectclass],
|
||||
AS_HELP_STRING([--with-ldap-user-objectclass=LDAP_OBJECT_CLASS], [ldap object class to use for user authentication (default: inetOrgPerson)]),
|
||||
ldap_user_objectclass=$withval,
|
||||
ldap_user_objectclass="inetOrgPerson"
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ldap_attribute_username],
|
||||
AS_HELP_STRING([--with-ldap-attribute-username=LDAP_ATTRIBUTE], [user attribute to use for the username (default: uid)]),
|
||||
ldap_attribute_username=$withval,
|
||||
ldap_attribute_username="uid"
|
||||
)
|
||||
|
||||
#
|
||||
# Icinga backend selection
|
||||
#
|
||||
|
||||
AC_ARG_WITH([icinga_backend],
|
||||
AS_HELP_STRING([--with-icinga-backend=(ido, statusdat, livestatus)], [backend to use for rb (default: statusdat)]),
|
||||
icinga_backend=$withval,
|
||||
icinga_backend="statusdat"
|
||||
)
|
||||
|
||||
ICINGA_CHECK_BACKENDTYPE($icinga_backend, [--with-icinga-backend])
|
||||
|
||||
#
|
||||
# Ido settings
|
||||
#
|
||||
|
||||
AC_ARG_WITH([ido_db_type],
|
||||
AS_HELP_STRING([--with-ido-db-type=(mysql, pgsql)], [database engine to use for retrieving data from the ido db (default: mysql)]),
|
||||
ido_db_type=$withval,
|
||||
ido_db_type="mysql"
|
||||
)
|
||||
|
||||
ICINGA_CHECK_DBTYPE($ido_db_type, [--with-ido-db-type])
|
||||
|
||||
AC_ARG_WITH([ido_host],
|
||||
AS_HELP_STRING([--with-ido-host=HOST], [host to use for retrieving data from the ido db (default: localhost)]),
|
||||
ido_host=$withval,
|
||||
ido_host="localhost"
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ido_port],
|
||||
AS_HELP_STRING([--with-ido-port=PORT], [backend to use for retrieving data from the ido db (default: 3306 for mysql. 5432 for pgsql)]),
|
||||
ido_port=$withval,
|
||||
ido_port=db_default_port
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ido_db_name],
|
||||
AS_HELP_STRING([--with-ido-db-name=DATABASE], [database name to use for retrieving data from the ido db (default: icinga)]),
|
||||
ido_db_name=$withval,
|
||||
ido_db_name="icinga"
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ido_user],
|
||||
AS_HELP_STRING([--with-ido-user=USER], [user to use for retrieving data from the ido db (default: icinga)]),
|
||||
ido_user=$withval,
|
||||
ido_user="icinga"
|
||||
)
|
||||
|
||||
AC_ARG_WITH([ido_password],
|
||||
AS_HELP_STRING([--with-ido-password=PASSWORD], [password to use for retrieving data from the ido db (default: icinga)]),
|
||||
ido_password=$withval,
|
||||
ido_password="icinga"
|
||||
)
|
||||
|
||||
#
|
||||
# Statusdat file location
|
||||
#
|
||||
|
||||
AC_ARG_WITH([statusdat_file],
|
||||
AS_HELP_STRING([--with-statusdat-file=FILE], [location of the status.dat file when retrieving data from status.dat (default: /usr/local/icinga/var/status.dat)]),
|
||||
statusdat_file=$withval,
|
||||
statusdat_file="/usr/local/icinga/var/status.dat"
|
||||
)
|
||||
|
||||
AC_ARG_WITH([objects_cache_file],
|
||||
AS_HELP_STRING([--with-objects-cache-file=FILE], [location of the objects.cache file when retrieving data from status.dat (default: /usr/local/icinga/var/objects.cache)]),
|
||||
objects_cache_file=$withval,
|
||||
objects_cache_file="/usr/local/icinga/var/objects.cache"
|
||||
)
|
||||
|
||||
#
|
||||
# Livestatus connection
|
||||
#
|
||||
|
||||
AC_ARG_WITH([livestatus_socket],
|
||||
AS_HELP_STRING([--with-livestatus-socket=FILE], [location of the livestatus socket (default: /usr/local/icinga/var/rw/live)]),
|
||||
livestatus_socket=$withval,
|
||||
livestatus_socket="/usr/local/icinga/var/rw/live"
|
||||
)
|
||||
|
||||
#
|
||||
# Icinga commandpipe
|
||||
#
|
||||
|
||||
AC_ARG_WITH([icinga_commandpipe],
|
||||
AS_HELP_STRING([--with-icinga-commandpipe=FILE], [location of the command pipe used for sending commands (default: /usr/local/icinga/var/rw/icinga.cmd)]),
|
||||
icinga_commandpipe=$withval,
|
||||
icinga_commandpipe="/usr/local/icinga/var/rw/icinga.cmd"
|
||||
)
|
||||
|
||||
AC_ARG_WITH([objects_cache_file],
|
||||
AS_HELP_STRING([--with-objects-file=FILE], [location of the objects.cache file when retrieving data from status.dat (default: /usr/local/icinga/var/objects.cache)]),
|
||||
objects_cache_file=$withval,
|
||||
objects_cache_file="/usr/local/icinga/var/objects.cache"
|
||||
)
|
||||
|
||||
#
|
||||
# Livestatus connection
|
||||
#
|
||||
|
||||
AC_ARG_WITH([livestatus_socket],
|
||||
AS_HELP_STRING([--with-livestatus-socket=FILE], [location of the livestatus socket (default: /usr/local/icinga/var/rw/live)]),
|
||||
livestatus_socket=$withval,
|
||||
livestatus_socket="/usr/local/icinga/var/rw/live"
|
||||
)
|
||||
|
||||
#
|
||||
# Icinga commandpipe
|
||||
#
|
||||
|
||||
AC_ARG_WITH([icinga_commandpipe],
|
||||
AS_HELP_STRING([--with-icinga-commandpipe=FILE], [location of the command pipe used for sending commands (default: /usr/local/icinga/var/rw/icinga.cmd)]),
|
||||
icinga_commandpipe=$withval,
|
||||
icinga_commandpipe="/usr/local/icinga/var/rw/icinga.cmd"
|
||||
)
|
||||
|
||||
# Installation options
|
||||
INSTALL_OPTS="-o $bin_user -g $bin_group"
|
||||
INSTALL_OPTS_WEB="-o $web_user -g $web_group"
|
||||
|
||||
AS_IF([test "x$internal_db_type" = xmysql], [
|
||||
AC_CHECK_PHP_INCLUDE([Zend/Db/Adapter/Pdo/Mysql.php],[Zend Framework - MySQL PDO Adapter])
|
||||
AC_CHECK_PHP_MODULE([mysql])
|
||||
AS_IF([test "x$internal_db_port" == xdb_default_port], [internal_db_port=3306])
|
||||
])
|
||||
|
||||
AS_IF([test "x$ido_db_type" = xmysql], [
|
||||
AC_CHECK_PHP_INCLUDE([Zend/Db/Adapter/Pdo/Mysql.php],[Zend Framework - MySQL PDO Adapter])
|
||||
AC_CHECK_PHP_MODULE([mysql])
|
||||
AS_IF([test "x$ido_port" = xdb_default_port], [ido_port=3306])
|
||||
])
|
||||
|
||||
AS_IF([test "x$internal_db_type" = xpgsql], [
|
||||
AC_CHECK_PHP_INCLUDE([Zend/Db/Adapter/Pdo/Pgsql.php],[Zend Framework - PostgreSQL PDO Adapter])
|
||||
AC_CHECK_PHP_MODULE([pgsql])
|
||||
AS_IF([test "x$internal_db_port" = xdb_default_port], [internal_db_port=5432])
|
||||
])
|
||||
|
||||
AS_IF([test "x$ido_db_type" = xpgsql], [
|
||||
AC_CHECK_PHP_INCLUDE([Zend/Db/Adapter/Pdo/Pgsql.php],[Zend Framework - PostgreSQL PDO Adapter])
|
||||
AC_CHECK_PHP_MODULE([pgsql])
|
||||
AS_IF([test "x$ido_port" = xdb_default_port], [ido_port=5432])
|
||||
])
|
||||
|
||||
#
|
||||
# Disable authentication backends
|
||||
#
|
||||
|
||||
ido_enabled="disabled = \"1\""
|
||||
statusdat_enabled="disabled = \"1\""
|
||||
livestatus_enabled="disabled = \"1\""
|
||||
|
||||
AS_CASE([$icinga_backend],
|
||||
["ido"], [ido_enabled=""],
|
||||
["statusdat"], [statusdat_enabled=""],
|
||||
["livestatus"], [livestatus_enabled=""],
|
||||
[statusdat_enabled=""])
|
||||
|
||||
ldap_auth_disabled="disabled = \"1\""
|
||||
AS_IF([test "x$ldap_authentication" != xno],
|
||||
AC_CHECK_PHP_MODULE([ldap])
|
||||
ldap_auth_disabled=""
|
||||
)
|
||||
|
||||
internal_auth_disabled="disabled = \"1\""
|
||||
AS_IF([test "x$internal_authentication" != xno],
|
||||
AC_CHECK_PHP_MODULE([ldap])
|
||||
internal_auth_disabled=""
|
||||
)
|
||||
|
||||
#
|
||||
# Substitution variables
|
||||
#
|
||||
|
||||
# Installation directives
|
||||
AC_SUBST(app_name)
|
||||
AC_SUBST(web_user)
|
||||
AC_SUBST(web_group)
|
||||
AC_SUBST(web_path)
|
||||
AC_SUBST(httpd_config_path)
|
||||
AC_SUBST(bin_user)
|
||||
AC_SUBST(bin_group)
|
||||
AC_SUBST(icingaweb_config_path)
|
||||
AC_SUBST(icingaweb_log_path)
|
||||
|
||||
# Internal db setup
|
||||
AC_SUBST(internal_db_type)
|
||||
AC_SUBST(internal_db_name)
|
||||
AC_SUBST(internal_db_host)
|
||||
AC_SUBST(internal_db_port)
|
||||
AC_SUBST(internal_db_user)
|
||||
AC_SUBST(internal_db_password)
|
||||
|
||||
# ldap setup
|
||||
AC_SUBST(ldap_host)
|
||||
AC_SUBST(ldap_port)
|
||||
AC_SUBST(ldap_rootdn)
|
||||
AC_SUBST(ldap_binddn)
|
||||
AC_SUBST(ldap_bindpass)
|
||||
AC_SUBST(ldap_user_objectclass)
|
||||
AC_SUBST(ldap_attribute_basedn)
|
||||
AC_SUBST(ldap_attribute_username)
|
||||
|
||||
# backend setup
|
||||
AC_SUBST(icinga_backend)
|
||||
|
||||
# ido backend variables
|
||||
AC_SUBST(ido_enabled)
|
||||
AC_SUBST(ido_db_type)
|
||||
AC_SUBST(ido_host)
|
||||
AC_SUBST(ido_port)
|
||||
AC_SUBST(ido_db_name)
|
||||
AC_SUBST(ido_user)
|
||||
AC_SUBST(ido_password)
|
||||
|
||||
# status.dat backend
|
||||
AC_SUBST(statusdat_enabled)
|
||||
AC_SUBST(statusdat_file)
|
||||
AC_SUBST(objects_cache_file)
|
||||
|
||||
# livestatus backend
|
||||
AC_SUBST(livestatus_socket)
|
||||
AC_SUBST(livestatus_enabled)
|
||||
|
||||
# command pipe
|
||||
AC_SUBST(icinga_commandpipe)
|
||||
|
||||
# Comment placeholders for toggling backends
|
||||
|
||||
AC_SUBST(ldap_auth_disabled)
|
||||
AC_SUBST(internal_auth_disabled)
|
||||
|
||||
# Application and installation
|
||||
AC_SUBST(PHP)
|
||||
AC_SUBST(INSTALL_OPTS)
|
||||
AC_SUBST(INSTALL_OPTS_WEB)
|
||||
|
||||
#
|
||||
# Create config files
|
||||
#
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
config/authentication.ini
|
||||
config/config.ini
|
||||
config/resources.ini
|
||||
config/modules/monitoring/backends.ini
|
||||
config/modules/monitoring/instances.ini
|
||||
etc/apache/icingaweb.conf
|
||||
])
|
||||
|
||||
#
|
||||
# Commit and write
|
||||
#
|
||||
AC_OUTPUT
|
|
@ -1,27 +0,0 @@
|
|||
# Create API documentation
|
||||
|
||||
## Prerequisites
|
||||
|
||||
You need phpDocumentor 2 installed on your system to create the api
|
||||
documentation. Please visit [phpdoc's website](http://phpdoc.org/) for more
|
||||
information. Additionally, the graphviz package is required to be installed.
|
||||
|
||||
## Configuration
|
||||
|
||||
phpDocumentator is configured with xml configuration reside in doc/phpdoc.xml.
|
||||
In there you'll find the target path where the documentation is created as
|
||||
html. Default location is doc/api/. Just point to index.html in this directory
|
||||
with a browser.
|
||||
|
||||
If you generated the documentation already, you can follow [this link](apidoc/idnex.html).
|
||||
|
||||
## Generation
|
||||
|
||||
Change to Icinga Web 2 root directory (source tree) and run:
|
||||
|
||||
bin/createapidoc.sh
|
||||
|
||||
## Options for createapidoc.sh
|
||||
|
||||
--build Optional, silent build mode
|
||||
--help Displays help message
|
|
@ -1 +0,0 @@
|
|||
icingaweb.conf
|
|
@ -1,32 +0,0 @@
|
|||
Alias @web_path@ "@prefix@/public"
|
||||
|
||||
<Directory "@prefix@/public">
|
||||
Options SymLinksIfOwnerMatch
|
||||
AllowOverride None
|
||||
|
||||
<IfModule mod_authz_core.c>
|
||||
# Apache 2.4
|
||||
<RequireAll>
|
||||
Require all granted
|
||||
</RequireAll>
|
||||
</IfModule>
|
||||
|
||||
<IfModule !mod_authz_core.c>
|
||||
# Apache 2.2
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</IfModule>
|
||||
|
||||
SetEnv ICINGAWEB_CONFIGDIR @icingaweb_config_path@
|
||||
|
||||
EnableSendfile Off
|
||||
|
||||
RewriteEngine on
|
||||
RewriteBase @web_path@/
|
||||
RewriteCond %{REQUEST_FILENAME} -s [OR]
|
||||
RewriteCond %{REQUEST_FILENAME} -l [OR]
|
||||
RewriteCond %{REQUEST_FILENAME} -d
|
||||
RewriteRule ^.*$ - [NC,L]
|
||||
RewriteRule ^.*$ index.php [NC,L]
|
||||
</Directory>
|
||||
|
|
@ -27,9 +27,10 @@ CREATE TABLE `icingaweb_user`(
|
|||
|
||||
CREATE TABLE `icingaweb_user_preference`(
|
||||
`username` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`section` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`name` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
|
||||
`value` varchar(255) NOT NULL,
|
||||
`ctime` timestamp NULL DEFAULT NULL,
|
||||
`mtime` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (`username`,`name`)
|
||||
PRIMARY KEY (`username`,`section`,`name`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
|
520
install-sh
520
install-sh
|
@ -1,520 +0,0 @@
|
|||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2009-04-28.21; # UTC
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
# following copyright and license.
|
||||
#
|
||||
# Copyright (C) 1994 X Consortium
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to
|
||||
# deal in the Software without restriction, including without limitation the
|
||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
# sell copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name of the X Consortium shall not
|
||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
||||
# ings in this Software without prior written authorization from the X Consor-
|
||||
# tium.
|
||||
#
|
||||
#
|
||||
# FSF changes to this file are in the public domain.
|
||||
#
|
||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
||||
# `make' implicit rules from creating a file called install from it
|
||||
# when there is no Makefile.
|
||||
#
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit=${DOITPROG-}
|
||||
if test -z "$doit"; then
|
||||
doit_exec=exec
|
||||
else
|
||||
doit_exec=$doit
|
||||
fi
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
|
||||
chgrpprog=${CHGRPPROG-chgrp}
|
||||
chmodprog=${CHMODPROG-chmod}
|
||||
chownprog=${CHOWNPROG-chown}
|
||||
cmpprog=${CMPPROG-cmp}
|
||||
cpprog=${CPPROG-cp}
|
||||
mkdirprog=${MKDIRPROG-mkdir}
|
||||
mvprog=${MVPROG-mv}
|
||||
rmprog=${RMPROG-rm}
|
||||
stripprog=${STRIPPROG-strip}
|
||||
|
||||
posix_glob='?'
|
||||
initialize_posix_glob='
|
||||
test "$posix_glob" != "?" || {
|
||||
if (set -f) 2>/dev/null; then
|
||||
posix_glob=
|
||||
else
|
||||
posix_glob=:
|
||||
fi
|
||||
}
|
||||
'
|
||||
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
chgrpcmd=
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
mvcmd=$mvprog
|
||||
rmcmd="$rmprog -f"
|
||||
stripcmd=
|
||||
|
||||
src=
|
||||
dst=
|
||||
dir_arg=
|
||||
dst_arg=
|
||||
|
||||
copy_on_change=false
|
||||
no_target_directory=
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
||||
or: $0 [OPTION]... -d DIRECTORIES...
|
||||
|
||||
In the 1st form, copy SRCFILE to DSTFILE.
|
||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
||||
In the 4th, create DIRECTORIES.
|
||||
|
||||
Options:
|
||||
--help display this help and exit.
|
||||
--version display version info and exit.
|
||||
|
||||
-c (ignored)
|
||||
-C install only if different (preserve the last data modification time)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-s $stripprog installed files.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||
RMPROG STRIPPROG
|
||||
"
|
||||
|
||||
while test $# -ne 0; do
|
||||
case $1 in
|
||||
-c) ;;
|
||||
|
||||
-C) copy_on_change=true;;
|
||||
|
||||
-d) dir_arg=true;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
|
||||
-m) mode=$2
|
||||
case $mode in
|
||||
*' '* | *' '* | *'
|
||||
'* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift;;
|
||||
|
||||
-s) stripcmd=$stripprog;;
|
||||
|
||||
-t) dst_arg=$2
|
||||
shift;;
|
||||
|
||||
-T) no_target_directory=true;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
||||
for arg
|
||||
do
|
||||
if test -n "$dst_arg"; then
|
||||
# $@ is not empty: it contains at least $arg.
|
||||
set fnord "$@" "$dst_arg"
|
||||
shift # fnord
|
||||
fi
|
||||
shift # arg
|
||||
dst_arg=$arg
|
||||
done
|
||||
fi
|
||||
|
||||
if test $# -eq 0; then
|
||||
if test -z "$dir_arg"; then
|
||||
echo "$0: no input file specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
# It's OK to call `install-sh -d' without argument.
|
||||
# This can happen when creating conditional directories.
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
case $mode in
|
||||
# Optimize common cases.
|
||||
*644) cp_umask=133;;
|
||||
*755) cp_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for src
|
||||
do
|
||||
# Protect names starting with `-'.
|
||||
case $src in
|
||||
-*) src=./$src;;
|
||||
esac
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
dst=$src
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
if test ! -f "$src" && test ! -d "$src"; then
|
||||
echo "$0: $src does not exist." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$dst_arg"; then
|
||||
echo "$0: no destination specified." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
dst=$dst_arg
|
||||
# Protect names starting with `-'.
|
||||
case $dst in
|
||||
-*) dst=./$dst;;
|
||||
esac
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
if test -d "$dst"; then
|
||||
if test -n "$no_target_directory"; then
|
||||
echo "$0: $dst_arg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dst=$dstdir/`basename "$src"`
|
||||
dstdir_status=0
|
||||
else
|
||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||
dstdir=`
|
||||
(dirname "$dst") 2>/dev/null ||
|
||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$dst" : 'X\(//\)[^/]' \| \
|
||||
X"$dst" : 'X\(//\)$' \| \
|
||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$dst" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'
|
||||
`
|
||||
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
if (umask $mkdir_umask &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writeable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/d" "$tmpdir"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix='/';;
|
||||
-*) prefix='./';;
|
||||
*) prefix='';;
|
||||
esac
|
||||
|
||||
eval "$initialize_posix_glob"
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
$posix_glob set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
$posix_glob set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test -z "$d" && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
# If any of these fail, we abort the whole thing. If we want to
|
||||
# ignore errors from any of these, just make sure not to ignore
|
||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
||||
#
|
||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
||||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
||||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
||||
|
||||
# If -C, don't bother to copy if it wouldn't change the file.
|
||||
if $copy_on_change &&
|
||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||
|
||||
eval "$initialize_posix_glob" &&
|
||||
$posix_glob set -f &&
|
||||
set X $old && old=:$2:$4:$5:$6 &&
|
||||
set X $new && new=:$2:$4:$5:$6 &&
|
||||
$posix_glob set +f &&
|
||||
|
||||
test "$old" = "$new" &&
|
||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||
then
|
||||
rm -f "$dsttmp"
|
||||
else
|
||||
# Rename the file to the real destination.
|
||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||
|
||||
# The rename failed, perhaps because mv can't rename something else
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
{
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
test ! -f "$dst" ||
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||
} ||
|
||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
fi || exit 1
|
||||
|
||||
trap '' 0
|
||||
fi
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
|
@ -13,7 +13,7 @@ use Icinga\Exception\NotReadableError;
|
|||
use Icinga\Application\Logger;
|
||||
use Icinga\Util\DateTimeFactory;
|
||||
use Icinga\Util\Translator;
|
||||
use Icinga\File\Ini\IniWriter;
|
||||
use Icinga\Util\TimezoneDetect;
|
||||
use Icinga\Exception\IcingaException;
|
||||
|
||||
/**
|
||||
|
@ -141,6 +141,13 @@ abstract class ApplicationBootstrap
|
|||
$this->setupAutoloader();
|
||||
$this->setupZendAutoloader();
|
||||
|
||||
set_include_path(
|
||||
implode(
|
||||
PATH_SEPARATOR,
|
||||
array($this->vendorDir, get_include_path())
|
||||
)
|
||||
);
|
||||
|
||||
Benchmark::measure('Bootstrap, autoloader registered');
|
||||
|
||||
Icinga::setApp($this);
|
||||
|
@ -478,42 +485,62 @@ abstract class ApplicationBootstrap
|
|||
}
|
||||
|
||||
/**
|
||||
* Setup default timezone
|
||||
* Detect the timezone
|
||||
*
|
||||
* @return self
|
||||
* @throws ConfigurationError if the timezone in config.ini isn't valid
|
||||
* @return null|string
|
||||
*/
|
||||
protected function setupTimezone()
|
||||
protected function detectTimezone()
|
||||
{
|
||||
$default = @date_default_timezone_get();
|
||||
if (! $default) {
|
||||
$default = 'UTC';
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up the timezone
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
protected final function setupTimezone()
|
||||
{
|
||||
$timezone = $this->detectTimeZone();
|
||||
if ($timezone === null || @date_default_timezone_set($timezone) === false) {
|
||||
$timezone = @date_default_timezone_get();
|
||||
if ($timezone === false) {
|
||||
$timezone = 'UTC';
|
||||
date_default_timezone_set($timezone);
|
||||
}
|
||||
}
|
||||
$timeZoneString = $this->config->fromSection('global', 'timezone', $default);
|
||||
date_default_timezone_set($timeZoneString);
|
||||
DateTimeFactory::setConfig(array('timezone' => $timeZoneString));
|
||||
DateTimeFactory::setConfig(array('timezone' => $timezone));
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup internationalization using gettext
|
||||
* Detect the locale
|
||||
*
|
||||
* Uses the preferred language sent by the browser or the default one
|
||||
*
|
||||
* @return self
|
||||
* @return null|string
|
||||
*/
|
||||
protected function setupInternationalization()
|
||||
protected function detectLocale()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up internationalization using gettext
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
protected final function setupInternationalization()
|
||||
{
|
||||
if ($this->hasLocales()) {
|
||||
Translator::registerDomain(Translator::DEFAULT_DOMAIN, $this->getLocaleDir());
|
||||
}
|
||||
|
||||
$locale = $this->detectLocale();
|
||||
if ($locale === null) {
|
||||
$locale = Translator::DEFAULT_LOCALE;
|
||||
}
|
||||
|
||||
try {
|
||||
Translator::setupLocale(
|
||||
isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])
|
||||
? Translator::getPreferredLocaleCode($_SERVER['HTTP_ACCEPT_LANGUAGE'])
|
||||
: Translator::DEFAULT_LOCALE
|
||||
);
|
||||
Translator::setupLocale($locale);
|
||||
} catch (Exception $error) {
|
||||
Logger::error($error);
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ namespace Icinga\Application;
|
|||
require_once __DIR__ . '/ApplicationBootstrap.php';
|
||||
|
||||
use Icinga\Authentication\Manager as AuthenticationManager;
|
||||
use Icinga\Authentication\Manager;
|
||||
use Icinga\Exception\ConfigurationError;
|
||||
use Icinga\Exception\NotReadableError;
|
||||
use Icinga\Application\Logger;
|
||||
|
@ -14,6 +15,8 @@ use Icinga\Util\TimezoneDetect;
|
|||
use Icinga\Web\Request;
|
||||
use Icinga\Web\Response;
|
||||
use Icinga\Web\View;
|
||||
use Icinga\Web\Session\Session as BaseSession;
|
||||
use Icinga\Web\Session;
|
||||
use Icinga\User;
|
||||
use Icinga\Util\Translator;
|
||||
use Icinga\Util\DateTimeFactory;
|
||||
|
@ -58,6 +61,13 @@ class Web extends ApplicationBootstrap
|
|||
*/
|
||||
private $request;
|
||||
|
||||
/**
|
||||
* Session object
|
||||
*
|
||||
* @var BaseSession
|
||||
*/
|
||||
private $session;
|
||||
|
||||
/**
|
||||
* User object
|
||||
*
|
||||
|
@ -84,6 +94,7 @@ class Web extends ApplicationBootstrap
|
|||
->setupErrorHandling()
|
||||
->loadConfig()
|
||||
->setupResourceFactory()
|
||||
->setupSession()
|
||||
->setupUser()
|
||||
->setupTimezone()
|
||||
->setupLogger()
|
||||
|
@ -164,6 +175,7 @@ class Web extends ApplicationBootstrap
|
|||
|
||||
$this->setupFrontController();
|
||||
$this->setupViewRenderer();
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
@ -183,6 +195,17 @@ class Web extends ApplicationBootstrap
|
|||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize a session provider
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
private function setupSession()
|
||||
{
|
||||
$this->session = Session::create();
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Inject dependencies into request
|
||||
*
|
||||
|
@ -268,29 +291,19 @@ class Web extends ApplicationBootstrap
|
|||
}
|
||||
|
||||
/**
|
||||
* Setup user timezone if set and valid, otherwise global default timezone
|
||||
*
|
||||
* @return self
|
||||
* @see ApplicationBootstrap::setupTimezone
|
||||
* (non-PHPDoc)
|
||||
* @see ApplicationBootstrap::detectTimezone() For the method documentation.
|
||||
*/
|
||||
protected function setupTimezone()
|
||||
protected function detectTimezone()
|
||||
{
|
||||
$userTimezone = null;
|
||||
|
||||
if ($this->user !== null && $this->user->getPreferences() !== null) {
|
||||
$auth = Manager::getInstance();
|
||||
if (! $auth->isAuthenticated()
|
||||
|| ($timezone = $auth->getUser()->getPreferences()->getValue('icingaweb', 'timezone')) === null
|
||||
) {
|
||||
$detect = new TimezoneDetect();
|
||||
$userTimezone = $this->user->getPreferences()
|
||||
->getValue('icingaweb', 'timezone', $detect->getTimezoneName());
|
||||
$timezone = $detect->getTimezoneName();
|
||||
}
|
||||
|
||||
try {
|
||||
DateTimeFactory::setConfig(array('timezone' => $userTimezone));
|
||||
date_default_timezone_set($userTimezone);
|
||||
} catch (ConfigurationError $e) {
|
||||
return parent::setupTimezone();
|
||||
}
|
||||
|
||||
return $this;
|
||||
return $timezone;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -300,22 +313,16 @@ class Web extends ApplicationBootstrap
|
|||
*
|
||||
* @return self
|
||||
*/
|
||||
protected function setupInternationalization()
|
||||
protected function detectLocale()
|
||||
{
|
||||
parent::setupInternationalization();
|
||||
if ($this->user !== null && $this->user->getPreferences() !== null
|
||||
&& (($locale = $this->user->getPreferences()->getValue('icingaweb', 'language')) !== null)
|
||||
$auth = Manager::getInstance();
|
||||
if (! $auth->isAuthenticated()
|
||||
|| ($locale = $auth->getUser()->getPreferences()->getValue('icingaweb', 'language')) === null
|
||||
&& isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])
|
||||
) {
|
||||
try {
|
||||
Translator::setupLocale($locale);
|
||||
} catch (Exception $error) {
|
||||
Logger::warning(
|
||||
'Cannot set locale "' . $locale . '" configured in ' .
|
||||
'preferences of user "' . $this->user->getUsername() . '"'
|
||||
);
|
||||
}
|
||||
$locale = Translator::getPreferredLocaleCode($_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
||||
}
|
||||
return $this;
|
||||
return $locale;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -332,3 +339,4 @@ class Web extends ApplicationBootstrap
|
|||
return $this;
|
||||
}
|
||||
}
|
||||
// @codeCoverageIgnoreEnd
|
||||
|
|
|
@ -13,9 +13,8 @@ use Icinga\Web\StyleSheet;
|
|||
use Icinga\Web\Url;
|
||||
use Icinga\Exception\ProgrammingError;
|
||||
|
||||
require_once 'IcingaVendor/dompdf/dompdf_config.inc.php';
|
||||
|
||||
spl_autoload_register('DOMPDF_autoload');
|
||||
require_once 'dompdf/dompdf_config.inc.php';
|
||||
require_once 'dompdf/include/autoload.inc.php';
|
||||
|
||||
class Pdf extends DOMPDF
|
||||
{
|
||||
|
|
|
@ -9,6 +9,7 @@ use Icinga\Exception\NotReadableError;
|
|||
use Icinga\Exception\NotWritableError;
|
||||
use Icinga\User\Preferences;
|
||||
use Icinga\User\Preferences\PreferencesStore;
|
||||
use Zend_Db_Expr;
|
||||
|
||||
/**
|
||||
* Load and save user preferences by using a database
|
||||
|
@ -20,22 +21,37 @@ class DbStore extends PreferencesStore
|
|||
*/
|
||||
const COLUMN_USERNAME = 'username';
|
||||
|
||||
/**
|
||||
* Column name for section
|
||||
*/
|
||||
const COLUMN_SECTION = 'section';
|
||||
|
||||
/**
|
||||
* Column name for preference
|
||||
*/
|
||||
const COLUMN_PREFERENCE = 'key';
|
||||
const COLUMN_PREFERENCE = 'name';
|
||||
|
||||
/**
|
||||
* Column name for value
|
||||
*/
|
||||
const COLUMN_VALUE = 'value';
|
||||
|
||||
/**
|
||||
* Column name for created time
|
||||
*/
|
||||
const COLUMN_CREATED_TIME = 'ctime';
|
||||
|
||||
/**
|
||||
* Column name for modified time
|
||||
*/
|
||||
const COLUMN_MODIFIED_TIME = 'mtime';
|
||||
|
||||
/**
|
||||
* Table name
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'preference';
|
||||
protected $table = 'icingaweb_user_preference';
|
||||
|
||||
/**
|
||||
* Stored preferences
|
||||
|
@ -74,7 +90,7 @@ class DbStore extends PreferencesStore
|
|||
try {
|
||||
$select = $this->getStoreConfig()->connection->getDbAdapter()->select();
|
||||
$result = $select
|
||||
->from($this->table, array(self::COLUMN_PREFERENCE, self::COLUMN_VALUE))
|
||||
->from($this->table, array(self::COLUMN_SECTION, self::COLUMN_PREFERENCE, self::COLUMN_VALUE))
|
||||
->where(self::COLUMN_USERNAME . ' = ?', $this->getUser()->getUsername())
|
||||
->query()
|
||||
->fetchAll();
|
||||
|
@ -89,7 +105,7 @@ class DbStore extends PreferencesStore
|
|||
if ($result !== false) {
|
||||
$values = array();
|
||||
foreach ($result as $row) {
|
||||
$values[$row->{self::COLUMN_PREFERENCE}] = $row->{self::COLUMN_VALUE};
|
||||
$values[$row->{self::COLUMN_SECTION}][$row->{self::COLUMN_PREFERENCE}] = $row->{self::COLUMN_VALUE};
|
||||
}
|
||||
$this->preferences = $values;
|
||||
}
|
||||
|
@ -106,22 +122,32 @@ class DbStore extends PreferencesStore
|
|||
{
|
||||
$preferences = $preferences->toArray();
|
||||
|
||||
$toBeInserted = array_diff_key($preferences, $this->preferences);
|
||||
if (!empty($toBeInserted)) {
|
||||
$this->insert($toBeInserted);
|
||||
}
|
||||
$sections = array_keys($preferences);
|
||||
|
||||
$toBeUpdated = array_intersect_key(
|
||||
array_diff_assoc($preferences, $this->preferences),
|
||||
array_diff_assoc($this->preferences, $preferences)
|
||||
);
|
||||
if (!empty($toBeUpdated)) {
|
||||
$this->update($toBeUpdated);
|
||||
}
|
||||
foreach ($sections as $section) {
|
||||
if (! array_key_exists($section, $this->preferences)) {
|
||||
$this->preferences[$section] = array();
|
||||
}
|
||||
if (! array_key_exists($section, $preferences)) {
|
||||
$preferences[$section] = array();
|
||||
}
|
||||
$toBeInserted = array_diff_key($preferences[$section], $this->preferences[$section]);
|
||||
if (!empty($toBeInserted)) {
|
||||
$this->insert($toBeInserted, $section);
|
||||
}
|
||||
|
||||
$toBeDeleted = array_keys(array_diff_key($this->preferences, $preferences));
|
||||
if (!empty($toBeDeleted)) {
|
||||
$this->delete($toBeDeleted);
|
||||
$toBeUpdated = array_intersect_key(
|
||||
array_diff_assoc($preferences[$section], $this->preferences[$section]),
|
||||
array_diff_assoc($this->preferences[$section], $preferences[$section])
|
||||
);
|
||||
if (!empty($toBeUpdated)) {
|
||||
$this->update($toBeUpdated, $section);
|
||||
}
|
||||
|
||||
$toBeDeleted = array_keys(array_diff_key($this->preferences[$section], $preferences[$section]));
|
||||
if (!empty($toBeDeleted)) {
|
||||
$this->delete($toBeDeleted, $section);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -129,11 +155,13 @@ class DbStore extends PreferencesStore
|
|||
* Insert the given preferences into the database
|
||||
*
|
||||
* @param array $preferences The preferences to insert
|
||||
* @param string $section The preferences in section to update
|
||||
*
|
||||
* @throws NotWritableError In case the database operation failed
|
||||
*/
|
||||
protected function insert(array $preferences)
|
||||
protected function insert(array $preferences, $section)
|
||||
{
|
||||
/** @var \Zend_Db_Adapter_Abstract $db */
|
||||
$db = $this->getStoreConfig()->connection->getDbAdapter();
|
||||
|
||||
try {
|
||||
|
@ -142,8 +170,11 @@ class DbStore extends PreferencesStore
|
|||
$this->table,
|
||||
array(
|
||||
self::COLUMN_USERNAME => $this->getUser()->getUsername(),
|
||||
$db->quoteIdentifier(self::COLUMN_SECTION) => $section,
|
||||
$db->quoteIdentifier(self::COLUMN_PREFERENCE) => $key,
|
||||
self::COLUMN_VALUE => $value
|
||||
self::COLUMN_VALUE => $value,
|
||||
self::COLUMN_CREATED_TIME => new Zend_Db_Expr('NOW()'),
|
||||
self::COLUMN_MODIFIED_TIME => new Zend_Db_Expr('NOW()')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -160,11 +191,13 @@ class DbStore extends PreferencesStore
|
|||
* Update the given preferences in the database
|
||||
*
|
||||
* @param array $preferences The preferences to update
|
||||
* @param string $section The preferences in section to update
|
||||
*
|
||||
* @throws NotWritableError In case the database operation failed
|
||||
*/
|
||||
protected function update(array $preferences)
|
||||
protected function update(array $preferences, $section)
|
||||
{
|
||||
/** @var \Zend_Db_Adapter_Abstract $db */
|
||||
$db = $this->getStoreConfig()->connection->getDbAdapter();
|
||||
|
||||
try {
|
||||
|
@ -174,7 +207,9 @@ class DbStore extends PreferencesStore
|
|||
array(self::COLUMN_VALUE => $value),
|
||||
array(
|
||||
self::COLUMN_USERNAME . '=?' => $this->getUser()->getUsername(),
|
||||
$db->quoteIdentifier(self::COLUMN_PREFERENCE) . '=?' => $key
|
||||
$db->quoteIdentifier(self::COLUMN_SECTION) . '=?' => $section,
|
||||
$db->quoteIdentifier(self::COLUMN_PREFERENCE) . '=?' => $key,
|
||||
self::COLUMN_MODIFIED_TIME => new Zend_Db_Expr('NOW()')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
@ -191,11 +226,13 @@ class DbStore extends PreferencesStore
|
|||
* Delete the given preference names from the database
|
||||
*
|
||||
* @param array $preferenceKeys The preference names to delete
|
||||
* @param string $section The preferences in section to update
|
||||
*
|
||||
* @throws NotWritableError In case the database operation failed
|
||||
*/
|
||||
protected function delete(array $preferenceKeys)
|
||||
protected function delete(array $preferenceKeys, $section)
|
||||
{
|
||||
/** @var \Zend_Db_Adapter_Abstract $db */
|
||||
$db = $this->getStoreConfig()->connection->getDbAdapter();
|
||||
|
||||
try {
|
||||
|
@ -203,6 +240,7 @@ class DbStore extends PreferencesStore
|
|||
$this->table,
|
||||
array(
|
||||
self::COLUMN_USERNAME . '=?' => $this->getUser()->getUsername(),
|
||||
$db->quoteIdentifier(self::COLUMN_SECTION) . '=?' => $section,
|
||||
$db->quoteIdentifier(self::COLUMN_PREFERENCE) . ' IN (?)' => $preferenceKeys
|
||||
)
|
||||
);
|
||||
|
|
|
@ -67,7 +67,7 @@ class IniStore extends PreferencesStore
|
|||
$this->getUser()->getUsername()
|
||||
);
|
||||
} else {
|
||||
$this->preferences = parse_ini_file($this->preferencesFile);
|
||||
$this->preferences = parse_ini_file($this->preferencesFile, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -81,9 +81,13 @@ class IniStore extends PreferencesStore
|
|||
*/
|
||||
public function save(Preferences $preferences)
|
||||
{
|
||||
$preferences = $preferences->toArray();
|
||||
$this->update(array_diff_assoc($preferences, $this->preferences));
|
||||
$this->delete(array_keys(array_diff_key($this->preferences, $preferences)));
|
||||
$this->preferences = $preferences->toArray();
|
||||
|
||||
// TODO: Elaborate whether we need to patch the contents
|
||||
// $preferences = $preferences->toArray();
|
||||
// $this->update(array_diff_assoc($preferences, $this->preferences));
|
||||
// $this->delete(array_keys(array_diff_key($this->preferences, $preferences)));
|
||||
|
||||
$this->write();
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
namespace Icinga\Web;
|
||||
|
||||
use Icinga\Authentication\Manager;
|
||||
use Icinga\Web\Menu\MenuItemRenderer;
|
||||
use RecursiveIterator;
|
||||
use Icinga\Application\Config;
|
||||
|
@ -200,41 +201,50 @@ class Menu implements RecursiveIterator
|
|||
*/
|
||||
protected function addMainMenuItems()
|
||||
{
|
||||
$this->add(t('Dashboard'), array(
|
||||
'url' => 'dashboard',
|
||||
'icon' => 'dashboard',
|
||||
'priority' => 10
|
||||
));
|
||||
$auth = Manager::getInstance();
|
||||
|
||||
$section = $this->add(t('System'), array(
|
||||
'icon' => 'conf-alt',
|
||||
'priority' => 200
|
||||
));
|
||||
$section->add(t('Preferences'), array(
|
||||
'url' => 'preference',
|
||||
'priority' => 200
|
||||
));
|
||||
$section->add(t('Configuration'), array(
|
||||
'url' => 'config',
|
||||
'priority' => 300
|
||||
));
|
||||
$section->add(t('Modules'), array(
|
||||
'url' => 'config/modules',
|
||||
'priority' => 400
|
||||
));
|
||||
if ($auth->isAuthenticated()) {
|
||||
|
||||
if (Logger::writesToFile()) {
|
||||
$section->add(t('Application Log'), array(
|
||||
'url' => 'list/applicationlog',
|
||||
'priority' => 500
|
||||
$this->add(t('Dashboard'), array(
|
||||
'url' => 'dashboard',
|
||||
'icon' => 'dashboard',
|
||||
'priority' => 10
|
||||
));
|
||||
|
||||
$section = $this->add(t('System'), array(
|
||||
'icon' => 'conf-alt',
|
||||
'priority' => 200
|
||||
));
|
||||
$section->add(t('Configuration'), array(
|
||||
'url' => 'config',
|
||||
'priority' => 300
|
||||
));
|
||||
$section->add(t('Modules'), array(
|
||||
'url' => 'config/modules',
|
||||
'priority' => 400
|
||||
));
|
||||
|
||||
if (Logger::writesToFile()) {
|
||||
$section->add(t('Application Log'), array(
|
||||
'url' => 'list/applicationlog',
|
||||
'priority' => 500
|
||||
));
|
||||
}
|
||||
|
||||
$section = $this->add($auth->getUser()->getUsername(), array(
|
||||
'icon' => 'user',
|
||||
'priority' => 600
|
||||
));
|
||||
$section->add(t('Preferences'), array(
|
||||
'url' => 'preference',
|
||||
'priority' => 601
|
||||
));
|
||||
|
||||
$section->add(t('Logout'), array(
|
||||
'url' => 'authentication/logout',
|
||||
'priority' => 700
|
||||
));
|
||||
}
|
||||
|
||||
$this->add(t('Logout'), array(
|
||||
'url' => 'authentication/logout',
|
||||
'icon' => 'user',
|
||||
'priority' => 300
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
# ignore all files
|
||||
*
|
||||
**/*
|
||||
lib/fonts/log.htm
|
||||
|
||||
# except of gitignore
|
||||
!.gitignore
|
|
@ -1,213 +0,0 @@
|
|||
|
||||
DOMPDF 0.6.0 beta 3 Release Notes
|
||||
|
||||
|
||||
New Features
|
||||
|
||||
|
||||
HTML/CSS/Images support
|
||||
|
||||
* Limited support for CSS float (disabled by default). See
|
||||
DOMPDF_ENABLE_CSS_FLOAT
|
||||
<http://code.google.com/p/dompdf/source/browse/tags/dompdf_0-6-0_beta3/dompdf/dompdf_config.inc.php#301>(r407,
|
||||
r408, r415, r438, r457, r459, r471)
|
||||
* Support for nth-child selectors (r407, r419)
|
||||
* Support for @font-face (r407, r413)
|
||||
* Font sub-setting now available (disabled by default). See
|
||||
DOMPDF_ENABLE_FONTSUBSETTING
|
||||
<http://code.google.com/p/dompdf/source/browse/tags/dompdf_0-6-0_beta3/dompdf/dompdf_config.inc.php#134>
|
||||
(r466, r468, r469)
|
||||
* Added an HTML5 Parser to enable improved document parsing/correction
|
||||
(disabled by default). See DOMPDF_ENABLE_HTML5PARSER
|
||||
<http://code.google.com/p/dompdf/source/browse/tags/dompdf_0-6-0_beta3/dompdf/dompdf_config.inc.php#316>
|
||||
(r429, r430, r431, r441)
|
||||
* Added support for ID in anchors tags (r373)
|
||||
* Added a message for broken images and updated the broken_image.png
|
||||
file to
|
||||
something less aggressive (r377)
|
||||
* Added support for transparent PNG in background-image and improved
|
||||
background-image handling (r380, r404, r450, r453)
|
||||
* Improved absolute positioning (r387, r409, r459, r460)
|
||||
* Added support for the "rem" CSS unit (r389)
|
||||
* Improved support for the "ex" CSS unit (r390)
|
||||
* When parsing tables, TR elements not contained by TBODY, TFOOT, or
|
||||
THEAD are automatically encapsulated by TBODY (r390)
|
||||
* Added support for the CSS declaration word-wrap: break-word (r391)
|
||||
* Added support for @page :left, :right, :first, :odd, and :even (r393)
|
||||
* Added support for CSS visibility and empty-cells properties (r393)
|
||||
* Type selectors (e.g. h1) are now case insensitive (r417)
|
||||
* Image type detection is now based on file header instead of filename
|
||||
extension (r422)
|
||||
* Added support for HTML5-style charset metatag (<meta
|
||||
charset=?utf-8?>) (r430)
|
||||
* Added support for nested CSS counters (r438)
|
||||
* Replaced TTF2UFM with php-font-lib and remove all dependencies on
|
||||
TTF2UFM (r447)
|
||||
* Table columns widths are now consistent across pages (r462)
|
||||
* Added limited support for table captions (r456)
|
||||
* Reduced rendering time by using caches (r469)
|
||||
|
||||
|
||||
Installation / configuration / debugging
|
||||
|
||||
* Added frame (i.e. discreet document element) count to the sample
|
||||
website debugger output (r399)
|
||||
* DOMPDF_ENABLE_REMOTE is no longer needed for stylesheet references
|
||||
that use a URL with domain component (r407)
|
||||
* Added a ready-to-use web-based font installer to the sample website
|
||||
(www/fonts.php) (r417, r418)
|
||||
* Added the Unicode-compatible DejaVu Fonts <http://dejavu-fonts.org>
|
||||
as part of the base installation (r388)
|
||||
|
||||
|
||||
Major bug fixes
|
||||
|
||||
* Fixes compatibility with the Symfony framework autoloader (disabled
|
||||
by default). See DOMPDF_AUTOLOAD_PREPEND
|
||||
<http://code.google.com/p/dompdf/source/browse/tags/dompdf_0-6-0_beta3/dompdf/dompdf_config.inc.php#310>
|
||||
(r374)
|
||||
* Fixes errors in how margins were collapsed between siblings (r375)
|
||||
* Improves the way lines are aligned vertically (see the
|
||||
css_baseline example) (r375)
|
||||
* Corrects the bounding box used for drawing backgrounds (r377)
|
||||
* Fixes the z-index rendering process (r377, r378, r379, r393)
|
||||
* Adds support for color styling inheritance (r390)
|
||||
* Fixes bugs with nested tables and HTML attributes (r393)
|
||||
* Fixes handling of URLs with non-ascii chars in the CPDF adapter (r394)
|
||||
* Fixes a rgb()-style color parsing bug (r402)
|
||||
* Fixes RLE4 compressed bitmap image support (r405)
|
||||
* Fixes bug that caused generated content to occasionally display
|
||||
multiple times (r406)
|
||||
* Improves background image clipping (r417)
|
||||
* Fixes table layout bug caused by zero-height rows (r464)
|
||||
* Fixes layout bug caused by 100% width tables centered with margin
|
||||
auto (r465)
|
||||
|
||||
For a full list of modifications since DOMPDF 0.6.0 beta 2 see the
|
||||
changes listed on this page of the repository changelog
|
||||
<http://code.google.com/p/dompdf/source/list?num=88&start=472&path=/trunk>.
|
||||
|
||||
|
||||
Known Issues
|
||||
|
||||
* Table cells cannot be split over multiple pages
|
||||
* CSS float support is not yet perfected
|
||||
|
||||
For a full list of known issues, see the issue tracker
|
||||
<http://code.google.com/p/dompdf/issues/list>.
|
||||
|
||||
|
||||
Installation Notes
|
||||
|
||||
* Starting with DOMPDF 0.6.0 the dompdf.php script will no longer
|
||||
allow conversion of HTML document on the local file system that are
|
||||
located outside of the path specified by DOMPDF_CHROOT
|
||||
<http://code.google.com/p/dompdf/source/browse/tags/dompdf_0-6-0_beta3/dompdf/dompdf_config.inc.php#109>
|
||||
* If you are installing DOMPDF on top of an existing installation you
|
||||
should remove any existing font metrics. This can be done manually
|
||||
or through the sample website (www/fonts.php).
|
||||
* When upgrading to a new version of DOMPDF you must replace
|
||||
dompdf_config.inc.php with the new one. To simplify the upgrade
|
||||
process you can store your configuration settings in
|
||||
dompdf_config.custom.inc.php (which does not need to be overwritten).
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
DOMPDF 0.6.0 beta 2
|
||||
|
||||
|
||||
New Features
|
||||
|
||||
|
||||
HTML/CSS/Images support
|
||||
|
||||
* CSS3: opacity, 2D transforms
|
||||
* CSS2: outline, letter-spacing, z-index, position: relative,
|
||||
overflow: hidden
|
||||
* CSS Pseudo elements :before and :after with generated content
|
||||
* CSS2 pseudo-selectors (last-child, disabled, checked, enabled)
|
||||
* CSS3 attribute selectors (ends-width, starts-width, contains)
|
||||
* Improves absolute positioning
|
||||
* Adds fixed positioning
|
||||
* CMYK colors and CMYK Jpeg images
|
||||
* 32bit PNG with alpha channel (Cpdf backend)
|
||||
* BMP images (8, 24 and 32 bit)
|
||||
* Adds support for image embedding via ?data? URI
|
||||
* Adds support for ordered list
|
||||
* Adds support for embedding PDF JavaScript
|
||||
* Uses the HTML document title element and certain meta tags to
|
||||
populate the PDF?s meta information (title, author, keywords and
|
||||
subject)
|
||||
* Uses the ?alt? attribute of an image when the image is inaccessible
|
||||
* Supports loading system fonts
|
||||
|
||||
|
||||
Installation / configuration
|
||||
|
||||
* The demo page now shows the HTML file and the PDF document in an iframe
|
||||
* Adds a setup/configuration tool that provides information about the
|
||||
server configuration, dompdf parameters, and installed fonts.
|
||||
* The font metrics cache files can now be cleared using the
|
||||
setup/config tool
|
||||
* Adds a debug tool that shows side-by-side the HTML file, the
|
||||
rendered PDF, and a console showing memory consumption, rendering
|
||||
time, warning, and debug messages
|
||||
* Adds examples showing new features
|
||||
* Moves ttf2ufm out of the DOMPDF code repository and into an external
|
||||
project <http://code.google.com/p/ttf2ufm/>
|
||||
* Disables inline PHP support by default
|
||||
* Disables direct input in the examples page for non-localhost access
|
||||
* Adds configuration option to help debugging (see DEBUG_LAYOUT) which
|
||||
draws rectangles around the different types of blocks and frames
|
||||
|
||||
|
||||
Major bug fixes
|
||||
|
||||
* Addresses memory leaks from running eval() on the font metrics cache
|
||||
* Reduces memory consumption caused by the font metrics (when using
|
||||
the Cpdf backend)
|
||||
* Updates text wrapping to prevent splitting text into more lines than
|
||||
needed (issue 198
|
||||
<http://code.google.com/p/dompdf/issues/detail?id=198>)
|
||||
* Implements a check against an infinite loop caused by table cells
|
||||
larger than a page
|
||||
* Improves text height and width calculations as well as placement
|
||||
(improves, for example, justified text rendering for text that is
|
||||
not iso-8859-1)
|
||||
* Updates the fallback MBString functions
|
||||
* Supports PHP 5.3 and includes improved compatibility with older
|
||||
versions of PHP 5
|
||||
* Improves image placement
|
||||
* Addresses problems with table flow caused by empty table cells
|
||||
* Addresses warning/errors caused by unrecognized CSS rules or selectors
|
||||
|
||||
For a full list of modifications since DOMPDF 0.6.0 beta 1 see the
|
||||
repository changelog
|
||||
<http://code.google.com/p/dompdf/source/list?path=/tags/dompdf_0-6-0_beta2&num=104>
|
||||
|
||||
|
||||
Known Issues
|
||||
|
||||
* Table cells cannot be split over multiple pages
|
||||
* Column widths of tables that span more than one page may not be
|
||||
consistent across pages
|
||||
|
||||
|
||||
Installation Notes
|
||||
|
||||
* Starting with dompdf 0.6.0 dompdf.php will no longer allow
|
||||
conversion of HTML document on the local file system that are
|
||||
located outside of the path specified by DOMPDF_CHROOT
|
||||
* The format of the font metrics cache has changed as of this release.
|
||||
You should manually remove any existing font metrics prior to
|
||||
upgrading or use the setup/configuration tool to do so immediately
|
||||
after.
|
||||
* Inline PHP is *disabled* by default now (see DOMPDF_ENABLE_PHP)
|
||||
* Because additional configuration options have been added you will
|
||||
need to replace your dompdf_config.inc.php file with the new one.
|
||||
You may modify this file or copy your configuration settings to
|
||||
dompdf_config.custom.inc.php.
|
||||
|
||||
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<docblox>
|
||||
<parser>
|
||||
<target>docs</target>
|
||||
</parser>
|
||||
<transformer>
|
||||
<target>docs</target>
|
||||
</transformer>
|
||||
<files>
|
||||
<directory>.</directory>
|
||||
<ignore>*/lib/fonts/*</ignore>
|
||||
<ignore>*/lib/html5lib/*</ignore>
|
||||
<ignore>*/lib/php-font-lib/*</ignore>
|
||||
<ignore>*www/*</ignore>
|
||||
<ignore>*.svn*</ignore>
|
||||
</files>
|
||||
<transformations>
|
||||
<template name="new_black" />
|
||||
</transformations>
|
||||
</docblox>
|
|
@ -1,865 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package dompdf
|
||||
* @link http://www.dompdf.com/
|
||||
* @author Benj Carson <benjcarson@digitaljunkies.ca>
|
||||
* @author Helmut Tischer <htischer@weihenstephan.org>
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: abstract_renderer.cls.php 448 2011-11-13 13:00:03Z fabien.menager $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Base renderer class
|
||||
*
|
||||
* @access private
|
||||
* @package dompdf
|
||||
*/
|
||||
abstract class Abstract_Renderer {
|
||||
|
||||
/**
|
||||
* Rendering backend
|
||||
*
|
||||
* @var Canvas
|
||||
*/
|
||||
protected $_canvas;
|
||||
|
||||
/**
|
||||
* Current dompdf instance
|
||||
*
|
||||
* @var DOMPDF
|
||||
*/
|
||||
protected $_dompdf;
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
* @param DOMPDF $dompdf The current dompdf instance
|
||||
*/
|
||||
function __construct(DOMPDF $dompdf) {
|
||||
$this->_dompdf = $dompdf;
|
||||
$this->_canvas = $dompdf->get_canvas();
|
||||
}
|
||||
|
||||
/**
|
||||
* Render a frame.
|
||||
*
|
||||
* Specialized in child classes
|
||||
*
|
||||
* @param Frame $frame The frame to render
|
||||
*/
|
||||
abstract function render(Frame $frame);
|
||||
|
||||
//........................................................................
|
||||
|
||||
/**
|
||||
* Render a background image over a rectangular area
|
||||
*
|
||||
* @param string $img The background image to load
|
||||
* @param float $x The left edge of the rectangular area
|
||||
* @param float $y The top edge of the rectangular area
|
||||
* @param float $width The width of the rectangular area
|
||||
* @param float $height The height of the rectangular area
|
||||
* @param Style $style The associated Style object
|
||||
*/
|
||||
protected function _background_image($url, $x, $y, $width, $height, $style) {
|
||||
$sheet = $style->get_stylesheet();
|
||||
|
||||
// Skip degenerate cases
|
||||
if ( $width == 0 || $height == 0 )
|
||||
return;
|
||||
|
||||
$box_width = $width;
|
||||
$box_height = $height;
|
||||
|
||||
//debugpng
|
||||
if (DEBUGPNG) print '[_background_image '.$url.']';
|
||||
|
||||
list($img, $type, $msg) = Image_Cache::resolve_url($url,
|
||||
$sheet->get_protocol(),
|
||||
$sheet->get_host(),
|
||||
$sheet->get_base_path());
|
||||
|
||||
// Bail if the image is no good
|
||||
if ( Image_Cache::is_broken($img) )
|
||||
return;
|
||||
|
||||
//Try to optimize away reading and composing of same background multiple times
|
||||
//Postponing read with imagecreatefrom ...()
|
||||
//final composition paramters and name not known yet
|
||||
//Therefore read dimension directly from file, instead of creating gd object first.
|
||||
//$img_w = imagesx($src); $img_h = imagesy($src);
|
||||
|
||||
list($img_w, $img_h) = dompdf_getimagesize($img);
|
||||
if (!isset($img_w) || $img_w == 0 || !isset($img_h) || $img_h == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
$repeat = $style->background_repeat;
|
||||
$bg_color = $style->background_color;
|
||||
|
||||
//Increase background resolution and dependent box size according to image resolution to be placed in
|
||||
//Then image can be copied in without resize
|
||||
$bg_width = round((float)($width * DOMPDF_DPI) / 72);
|
||||
$bg_height = round((float)($height * DOMPDF_DPI) / 72);
|
||||
|
||||
//Need %bg_x, $bg_y as background pos, where img starts, converted to pixel
|
||||
|
||||
list($bg_x, $bg_y) = $style->background_position;
|
||||
|
||||
if ( is_percent($bg_x) ) {
|
||||
// The point $bg_x % from the left edge of the image is placed
|
||||
// $bg_x % from the left edge of the background rectangle
|
||||
$p = ((float)$bg_x)/100.0;
|
||||
$x1 = $p * $img_w;
|
||||
$x2 = $p * $bg_width;
|
||||
|
||||
$bg_x = $x2 - $x1;
|
||||
} else {
|
||||
$bg_x = (float)($style->length_in_pt($bg_x)*DOMPDF_DPI) / 72;
|
||||
}
|
||||
|
||||
$bg_x = round($bg_x + $style->length_in_pt($style->border_left_width)*DOMPDF_DPI / 72);
|
||||
|
||||
if ( is_percent($bg_y) ) {
|
||||
// The point $bg_y % from the left edge of the image is placed
|
||||
// $bg_y % from the left edge of the background rectangle
|
||||
$p = ((float)$bg_y)/100.0;
|
||||
$y1 = $p * $img_h;
|
||||
$y2 = $p * $bg_height;
|
||||
|
||||
$bg_y = $y2 - $y1;
|
||||
} else {
|
||||
$bg_y = (float)($style->length_in_pt($bg_y)*DOMPDF_DPI) / 72;
|
||||
}
|
||||
|
||||
$bg_y = round($bg_y + $style->length_in_pt($style->border_top_width)*DOMPDF_DPI / 72);
|
||||
|
||||
//clip background to the image area on partial repeat. Nothing to do if img off area
|
||||
//On repeat, normalize start position to the tile at immediate left/top or 0/0 of area
|
||||
//On no repeat with positive offset: move size/start to have offset==0
|
||||
//Handle x/y Dimensions separately
|
||||
|
||||
if ( $repeat !== "repeat" && $repeat !== "repeat-x" ) {
|
||||
//No repeat x
|
||||
if ($bg_x < 0) {
|
||||
$bg_width = $img_w + $bg_x;
|
||||
} else {
|
||||
$x += ($bg_x * 72)/DOMPDF_DPI;
|
||||
$bg_width = $bg_width - $bg_x;
|
||||
if ($bg_width > $img_w) {
|
||||
$bg_width = $img_w;
|
||||
}
|
||||
$bg_x = 0;
|
||||
}
|
||||
if ($bg_width <= 0) {
|
||||
return;
|
||||
}
|
||||
$width = (float)($bg_width * 72)/DOMPDF_DPI;
|
||||
} else {
|
||||
//repeat x
|
||||
if ($bg_x < 0) {
|
||||
$bg_x = - ((-$bg_x) % $img_w);
|
||||
} else {
|
||||
$bg_x = $bg_x % $img_w;
|
||||
if ($bg_x > 0) {
|
||||
$bg_x -= $img_w;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( $repeat !== "repeat" && $repeat !== "repeat-y" ) {
|
||||
//no repeat y
|
||||
if ($bg_y < 0) {
|
||||
$bg_height = $img_h + $bg_y;
|
||||
} else {
|
||||
$y += ($bg_y * 72)/DOMPDF_DPI;
|
||||
$bg_height = $bg_height - $bg_y;
|
||||
if ($bg_height > $img_h) {
|
||||
$bg_height = $img_h;
|
||||
}
|
||||
$bg_y = 0;
|
||||
}
|
||||
if ($bg_height <= 0) {
|
||||
return;
|
||||
}
|
||||
$height = (float)($bg_height * 72)/DOMPDF_DPI;
|
||||
} else {
|
||||
//repeat y
|
||||
if ($bg_y < 0) {
|
||||
$bg_y = - ((-$bg_y) % $img_h);
|
||||
} else {
|
||||
$bg_y = $bg_y % $img_h;
|
||||
if ($bg_y > 0) {
|
||||
$bg_y -= $img_h;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Optimization, if repeat has no effect
|
||||
if ( $repeat === "repeat" && $bg_y <= 0 && $img_h+$bg_y >= $bg_height ) {
|
||||
$repeat = "repeat-x";
|
||||
}
|
||||
if ( $repeat === "repeat" && $bg_x <= 0 && $img_w+$bg_x >= $bg_width ) {
|
||||
$repeat = "repeat-y";
|
||||
}
|
||||
if ( ($repeat === "repeat-x" && $bg_x <= 0 && $img_w+$bg_x >= $bg_width) ||
|
||||
($repeat === "repeat-y" && $bg_y <= 0 && $img_h+$bg_y >= $bg_height) ) {
|
||||
$repeat = "no-repeat";
|
||||
}
|
||||
|
||||
//Use filename as indicator only
|
||||
//different names for different variants to have different copies in the pdf
|
||||
//This is not dependent of background color of box! .'_'.(is_array($bg_color) ? $bg_color["hex"] : $bg_color)
|
||||
//Note: Here, bg_* are the start values, not end values after going through the tile loops!
|
||||
|
||||
$filedummy = $img;
|
||||
|
||||
/*
|
||||
//Make shorter strings with limited characters for cache associative array index - needed?
|
||||
//Strip common base path - server root, explicite temp, default temp; remove unwanted characters;
|
||||
$filedummy = strtr($filedummy,"\\:","//");
|
||||
$p = strtr($_SERVER["DOCUMENT_ROOT"],"\\:","//");
|
||||
$l = strlen($p);
|
||||
if ( substr($filedummy,0,$l) == $p) {
|
||||
$filedummy = substr($filedummy,$l);
|
||||
} else {
|
||||
$p = strtr(DOMPDF_TEMP_DIR,"\\:","//");
|
||||
$l = strlen($p);
|
||||
if ( substr($filedummy,0,$l) == $p) {
|
||||
$filedummy = substr($filedummy,$l);
|
||||
} else {
|
||||
$p = strtr(sys_get_temp_dir(),"\\:","//");
|
||||
$l = strlen($p);
|
||||
if ( substr($filedummy,0,$l) == $p) {
|
||||
$filedummy = substr($filedummy,$l);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
$is_png = false;
|
||||
$filedummy .= '_'.$bg_width.'_'.$bg_height.'_'.$bg_x.'_'.$bg_y.'_'.$repeat;
|
||||
//debugpng
|
||||
//if (DEBUGPNG) print '<pre>[_background_image name '.$filedummy.']</pre>';
|
||||
|
||||
//Optimization to avoid multiple times rendering the same image.
|
||||
//If check functions are existing and identical image already cached,
|
||||
//then skip creation of duplicate, because it is not needed by addImagePng
|
||||
if ( method_exists( $this->_canvas, "get_cpdf" ) &&
|
||||
method_exists( $this->_canvas->get_cpdf(), "addImagePng" ) &&
|
||||
method_exists( $this->_canvas->get_cpdf(), "image_iscached" ) &&
|
||||
$this->_canvas->get_cpdf()->image_iscached($filedummy) ) {
|
||||
$bg = null;
|
||||
|
||||
//debugpng
|
||||
//if (DEBUGPNG) print '[_background_image skip]';
|
||||
}
|
||||
|
||||
else {
|
||||
|
||||
// Create a new image to fit over the background rectangle
|
||||
$bg = imagecreatetruecolor($bg_width, $bg_height);
|
||||
|
||||
switch (strtolower($type)) {
|
||||
case IMAGETYPE_PNG:
|
||||
$is_png = true;
|
||||
imagesavealpha($bg, true);
|
||||
imagealphablending($bg, false);
|
||||
$src = imagecreatefrompng($img);
|
||||
break;
|
||||
|
||||
case IMAGETYPE_JPEG:
|
||||
$src = imagecreatefromjpeg($img);
|
||||
break;
|
||||
|
||||
case IMAGETYPE_GIF:
|
||||
$src = imagecreatefromgif($img);
|
||||
break;
|
||||
|
||||
case IMAGETYPE_BMP:
|
||||
$src = imagecreatefrombmp($img);
|
||||
break;
|
||||
|
||||
default: return; // Unsupported image type
|
||||
}
|
||||
|
||||
if ($src == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
//Background color if box is not relevant here
|
||||
//Non transparent image: box clipped to real size. Background non relevant.
|
||||
//Transparent image: The image controls the transparency and lets shine through whatever background.
|
||||
//However on transparent imaage preset the composed image with the transparency color,
|
||||
//to keep the transparency when copying over the non transparent parts of the tiles.
|
||||
$ti = imagecolortransparent($src);
|
||||
|
||||
if ($ti >= 0) {
|
||||
$tc = imagecolorsforindex($src,$ti);
|
||||
$ti = imagecolorallocate($bg,$tc['red'],$tc['green'],$tc['blue']);
|
||||
imagefill($bg,0,0,$ti);
|
||||
imagecolortransparent($bg, $ti);
|
||||
}
|
||||
|
||||
//This has only an effect for the non repeatable dimension.
|
||||
//compute start of src and dest coordinates of the single copy
|
||||
if ( $bg_x < 0 ) {
|
||||
$dst_x = 0;
|
||||
$src_x = -$bg_x;
|
||||
} else {
|
||||
$src_x = 0;
|
||||
$dst_x = $bg_x;
|
||||
}
|
||||
|
||||
if ( $bg_y < 0 ) {
|
||||
$dst_y = 0;
|
||||
$src_y = -$bg_y;
|
||||
} else {
|
||||
$src_y = 0;
|
||||
$dst_y = $bg_y;
|
||||
}
|
||||
|
||||
//For historical reasons exchange meanings of variables:
|
||||
//start_* will be the start values, while bg_* will be the temporary start values in the loops
|
||||
$start_x = $bg_x;
|
||||
$start_y = $bg_y;
|
||||
|
||||
// Copy regions from the source image to the background
|
||||
if ( $repeat === "no-repeat" ) {
|
||||
|
||||
// Simply place the image on the background
|
||||
imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $img_w, $img_h);
|
||||
|
||||
} else if ( $repeat === "repeat-x" ) {
|
||||
|
||||
for ( $bg_x = $start_x; $bg_x < $bg_width; $bg_x += $img_w ) {
|
||||
if ( $bg_x < 0 ) {
|
||||
$dst_x = 0;
|
||||
$src_x = -$bg_x;
|
||||
$w = $img_w + $bg_x;
|
||||
} else {
|
||||
$dst_x = $bg_x;
|
||||
$src_x = 0;
|
||||
$w = $img_w;
|
||||
}
|
||||
imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $w, $img_h);
|
||||
}
|
||||
|
||||
} else if ( $repeat === "repeat-y" ) {
|
||||
|
||||
for ( $bg_y = $start_y; $bg_y < $bg_height; $bg_y += $img_h ) {
|
||||
if ( $bg_y < 0 ) {
|
||||
$dst_y = 0;
|
||||
$src_y = -$bg_y;
|
||||
$h = $img_h + $bg_y;
|
||||
} else {
|
||||
$dst_y = $bg_y;
|
||||
$src_y = 0;
|
||||
$h = $img_h;
|
||||
}
|
||||
imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $img_w, $h);
|
||||
|
||||
}
|
||||
|
||||
} else if ( $repeat === "repeat" ) {
|
||||
|
||||
for ( $bg_y = $start_y; $bg_y < $bg_height; $bg_y += $img_h ) {
|
||||
for ( $bg_x = $start_x; $bg_x < $bg_width; $bg_x += $img_w ) {
|
||||
|
||||
if ( $bg_x < 0 ) {
|
||||
$dst_x = 0;
|
||||
$src_x = -$bg_x;
|
||||
$w = $img_w + $bg_x;
|
||||
} else {
|
||||
$dst_x = $bg_x;
|
||||
$src_x = 0;
|
||||
$w = $img_w;
|
||||
}
|
||||
|
||||
if ( $bg_y < 0 ) {
|
||||
$dst_y = 0;
|
||||
$src_y = -$bg_y;
|
||||
$h = $img_h + $bg_y;
|
||||
} else {
|
||||
$dst_y = $bg_y;
|
||||
$src_y = 0;
|
||||
$h = $img_h;
|
||||
}
|
||||
imagecopy($bg, $src, $dst_x, $dst_y, $src_x, $src_y, $w, $h);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
print 'Unknown repeat!';
|
||||
}
|
||||
|
||||
imagedestroy($src);
|
||||
|
||||
} /* End optimize away creation of duplicates */
|
||||
|
||||
$this->_canvas->clipping_rectangle($x, $y, $box_width, $box_height);
|
||||
|
||||
//img: image url string
|
||||
//img_w, img_h: original image size in px
|
||||
//width, height: box size in pt
|
||||
//bg_width, bg_height: box size in px
|
||||
//x, y: left/top edge of box on page in pt
|
||||
//start_x, start_y: placement of image relativ to pattern
|
||||
//$repeat: repeat mode
|
||||
//$bg: GD object of result image
|
||||
//$src: GD object of original image
|
||||
//When using cpdf and optimization to direct png creation from gd object is available,
|
||||
//don't create temp file, but place gd object directly into the pdf
|
||||
if ( !$is_png && method_exists( $this->_canvas, "get_cpdf" ) &&
|
||||
method_exists( $this->_canvas->get_cpdf(), "addImagePng" ) ) {
|
||||
// Note: CPDF_Adapter image converts y position
|
||||
$this->_canvas->get_cpdf()->addImagePng($filedummy, $x, $this->_canvas->get_height() - $y - $height, $width, $height, $bg);
|
||||
}
|
||||
|
||||
else {
|
||||
$tmp_name = tempnam(DOMPDF_TEMP_DIR, "bg_dompdf_img_");
|
||||
@unlink($tmp_name);
|
||||
$tmp_file = "$tmp_name.png";
|
||||
|
||||
//debugpng
|
||||
if (DEBUGPNG) print '[_background_image '.$tmp_file.']';
|
||||
|
||||
imagepng($bg, $tmp_file);
|
||||
$this->_canvas->image($tmp_file, $x, $y, $width, $height);
|
||||
imagedestroy($bg);
|
||||
|
||||
//debugpng
|
||||
if (DEBUGPNG) print '[_background_image unlink '.$tmp_file.']';
|
||||
|
||||
if (!DEBUGKEEPTEMP)
|
||||
unlink($tmp_file);
|
||||
}
|
||||
|
||||
$this->_canvas->clipping_end();
|
||||
}
|
||||
|
||||
protected function _get_dash_pattern($style, $width) {
|
||||
$pattern = array();
|
||||
|
||||
switch ($style) {
|
||||
default:
|
||||
/*case "solid":
|
||||
case "double":
|
||||
case "groove":
|
||||
case "inset":
|
||||
case "outset":
|
||||
case "ridge":*/
|
||||
case "none": break;
|
||||
|
||||
case "dotted":
|
||||
if ( $width <= 1 )
|
||||
$pattern = array($width, $width*2);
|
||||
else
|
||||
$pattern = array($width);
|
||||
break;
|
||||
|
||||
case "dashed":
|
||||
$pattern = array(3 * $width);
|
||||
break;
|
||||
}
|
||||
|
||||
return $pattern;
|
||||
}
|
||||
|
||||
protected function _border_none($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
|
||||
return;
|
||||
}
|
||||
|
||||
protected function _border_hidden($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
|
||||
return;
|
||||
}
|
||||
|
||||
// Border rendering functions
|
||||
protected function _border_dotted($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
|
||||
list($top, $right, $bottom, $left) = $widths;
|
||||
|
||||
$pattern = $this->_get_dash_pattern("dotted", $$side);
|
||||
|
||||
switch ($side) {
|
||||
|
||||
case "top":
|
||||
$delta = $top / 2;
|
||||
case "bottom":
|
||||
$delta = isset($delta) ? $delta : -$bottom / 2;
|
||||
$this->_canvas->line($x, $y + $delta, $x + $length, $y + $delta, $color, $$side, $pattern);
|
||||
break;
|
||||
|
||||
case "left":
|
||||
$delta = $left / 2;
|
||||
case "right":
|
||||
$delta = isset($delta) ? $delta : - $right / 2;
|
||||
$this->_canvas->line($x + $delta, $y, $x + $delta, $y + $length, $color, $$side, $pattern);
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected function _border_dashed($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
|
||||
list($top, $right, $bottom, $left) = $widths;
|
||||
|
||||
$pattern = $this->_get_dash_pattern("dashed", $$side);
|
||||
|
||||
switch ($side) {
|
||||
|
||||
case "top":
|
||||
$delta = $top / 2;
|
||||
case "bottom":
|
||||
$delta = isset($delta) ? $delta : -$bottom / 2;
|
||||
$this->_canvas->line($x, $y + $delta, $x + $length, $y + $delta, $color, $$side, $pattern);
|
||||
break;
|
||||
|
||||
case "left":
|
||||
$delta = $left / 2;
|
||||
case "right":
|
||||
$delta = isset($delta) ? $delta : - $right / 2;
|
||||
$this->_canvas->line($x + $delta, $y, $x + $delta, $y + $length, $color, $$side, $pattern);
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected function _border_solid($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
|
||||
list($top, $right, $bottom, $left) = $widths;
|
||||
|
||||
// All this polygon business is for beveled corners...
|
||||
switch ($side) {
|
||||
|
||||
case "top":
|
||||
if ( $corner_style === "bevel" ) {
|
||||
|
||||
$points = array($x, $y,
|
||||
$x + $length, $y,
|
||||
$x + $length - $right, $y + $top,
|
||||
$x + $left, $y + $top);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
} else
|
||||
$this->_canvas->filled_rectangle($x, $y, $length, $top, $color);
|
||||
|
||||
break;
|
||||
|
||||
case "bottom":
|
||||
if ( $corner_style === "bevel" ) {
|
||||
$points = array($x, $y,
|
||||
$x + $length, $y,
|
||||
$x + $length - $right, $y - $bottom,
|
||||
$x + $left, $y - $bottom);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
} else
|
||||
$this->_canvas->filled_rectangle($x, $y - $bottom, $length, $bottom, $color);
|
||||
|
||||
break;
|
||||
|
||||
case "left":
|
||||
if ( $corner_style === "bevel" ) {
|
||||
$points = array($x, $y,
|
||||
$x, $y + $length,
|
||||
$x + $left, $y + $length - $bottom,
|
||||
$x + $left, $y + $top);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
} else
|
||||
$this->_canvas->filled_rectangle($x, $y, $left, $length, $color);
|
||||
|
||||
break;
|
||||
|
||||
case "right":
|
||||
if ( $corner_style === "bevel" ) {
|
||||
$points = array($x, $y,
|
||||
$x, $y + $length,
|
||||
$x - $right, $y + $length - $bottom,
|
||||
$x - $right, $y + $top);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
} else
|
||||
$this->_canvas->filled_rectangle($x - $right, $y, $right, $length, $color);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected function _border_double($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
|
||||
list($top, $right, $bottom, $left) = $widths;
|
||||
|
||||
$line_width = $$side / 3;
|
||||
|
||||
// We draw the outermost edge first. Points are ordered: outer left,
|
||||
// outer right, inner right, inner left, or outer top, outer bottom,
|
||||
// inner bottom, inner top.
|
||||
switch ($side) {
|
||||
|
||||
case "top":
|
||||
if ( $corner_style === "bevel" ) {
|
||||
$left_line_width = $left / 3;
|
||||
$right_line_width = $right / 3;
|
||||
|
||||
$points = array($x, $y,
|
||||
$x + $length, $y,
|
||||
$x + $length - $right_line_width, $y + $line_width,
|
||||
$x + $left_line_width, $y + $line_width,);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
|
||||
$points = array($x + $left - $left_line_width, $y + $top - $line_width,
|
||||
$x + $length - $right + $right_line_width, $y + $top - $line_width,
|
||||
$x + $length - $right, $y + $top,
|
||||
$x + $left, $y + $top);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
|
||||
} else {
|
||||
$this->_canvas->filled_rectangle($x, $y, $length, $line_width, $color);
|
||||
$this->_canvas->filled_rectangle($x, $y + $top - $line_width, $length, $line_width, $color);
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case "bottom":
|
||||
if ( $corner_style === "bevel" ) {
|
||||
$left_line_width = $left / 3;
|
||||
$right_line_width = $right / 3;
|
||||
|
||||
$points = array($x, $y,
|
||||
$x + $length, $y,
|
||||
$x + $length - $right_line_width, $y - $line_width,
|
||||
$x + $left_line_width, $y - $line_width);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
|
||||
$points = array($x + $left - $left_line_width, $y - $bottom + $line_width,
|
||||
$x + $length - $right + $right_line_width, $y - $bottom + $line_width,
|
||||
$x + $length - $right, $y - $bottom,
|
||||
$x + $left, $y - $bottom);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
|
||||
} else {
|
||||
$this->_canvas->filled_rectangle($x, $y - $line_width, $length, $line_width, $color);
|
||||
$this->_canvas->filled_rectangle($x, $y - $bottom, $length, $line_width, $color);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "left":
|
||||
if ( $corner_style === "bevel" ) {
|
||||
$top_line_width = $top / 3;
|
||||
$bottom_line_width = $bottom / 3;
|
||||
|
||||
$points = array($x, $y,
|
||||
$x, $y + $length,
|
||||
$x + $line_width, $y + $length - $bottom_line_width,
|
||||
$x + $line_width, $y + $top_line_width);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
|
||||
$points = array($x + $left - $line_width, $y + $top - $top_line_width,
|
||||
$x + $left - $line_width, $y + $length - $bottom + $bottom_line_width,
|
||||
$x + $left, $y + $length - $bottom,
|
||||
$x + $left, $y + $top);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
|
||||
} else {
|
||||
$this->_canvas->filled_rectangle($x, $y, $line_width, $length, $color);
|
||||
$this->_canvas->filled_rectangle($x + $left - $line_width, $y, $line_width, $length, $color);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "right":
|
||||
if ( $corner_style === "bevel" ) {
|
||||
$top_line_width = $top / 3;
|
||||
$bottom_line_width = $bottom / 3;
|
||||
|
||||
|
||||
$points = array($x, $y,
|
||||
$x, $y + $length,
|
||||
$x - $line_width, $y + $length - $bottom_line_width,
|
||||
$x - $line_width, $y + $top_line_width);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
|
||||
$points = array($x - $right + $line_width, $y + $top - $top_line_width,
|
||||
$x - $right + $line_width, $y + $length - $bottom + $bottom_line_width,
|
||||
$x - $right, $y + $length - $bottom,
|
||||
$x - $right, $y + $top);
|
||||
$this->_canvas->polygon($points, $color, null, null, true);
|
||||
|
||||
} else {
|
||||
$this->_canvas->filled_rectangle($x - $line_width, $y, $line_width, $length, $color);
|
||||
$this->_canvas->filled_rectangle($x - $right, $y, $line_width, $length, $color);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected function _border_groove($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
|
||||
list($top, $right, $bottom, $left) = $widths;
|
||||
|
||||
$half_widths = array($top / 2, $right / 2, $bottom / 2, $left / 2);
|
||||
|
||||
$this->_border_inset($x, $y, $length, $color, $half_widths, $side);
|
||||
|
||||
switch ($side) {
|
||||
|
||||
case "top":
|
||||
$x += $left / 2;
|
||||
$y += $top / 2;
|
||||
$length -= $left / 2 + $right / 2;
|
||||
break;
|
||||
|
||||
case "bottom":
|
||||
$x += $left / 2;
|
||||
$y -= $bottom / 2;
|
||||
$length -= $left / 2 + $right / 2;
|
||||
break;
|
||||
|
||||
case "left":
|
||||
$x += $left / 2;
|
||||
$y += $top / 2;
|
||||
$length -= $top / 2 + $bottom / 2;
|
||||
break;
|
||||
|
||||
case "right":
|
||||
$x -= $right / 2;
|
||||
$y += $top / 2;
|
||||
$length -= $top / 2 + $bottom / 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
$this->_border_outset($x, $y, $length, $color, $half_widths, $side);
|
||||
|
||||
}
|
||||
|
||||
protected function _border_ridge($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
|
||||
list($top, $right, $bottom, $left) = $widths;
|
||||
|
||||
$half_widths = array($top / 2, $right / 2, $bottom / 2, $left / 2);
|
||||
|
||||
$this->_border_outset($x, $y, $length, $color, $half_widths, $side);
|
||||
|
||||
switch ($side) {
|
||||
|
||||
case "top":
|
||||
$x += $left / 2;
|
||||
$y += $top / 2;
|
||||
$length -= $left / 2 + $right / 2;
|
||||
break;
|
||||
|
||||
case "bottom":
|
||||
$x += $left / 2;
|
||||
$y -= $bottom / 2;
|
||||
$length -= $left / 2 + $right / 2;
|
||||
break;
|
||||
|
||||
case "left":
|
||||
$x += $left / 2;
|
||||
$y += $top / 2;
|
||||
$length -= $top / 2 + $bottom / 2;
|
||||
break;
|
||||
|
||||
case "right":
|
||||
$x -= $right / 2;
|
||||
$y += $top / 2;
|
||||
$length -= $top / 2 + $bottom / 2;
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
$this->_border_inset($x, $y, $length, $color, $half_widths, $side);
|
||||
|
||||
}
|
||||
|
||||
protected function _tint($c) {
|
||||
if ( !is_numeric($c) )
|
||||
return $c;
|
||||
|
||||
return min(1, $c + 0.16);
|
||||
}
|
||||
|
||||
protected function _shade($c) {
|
||||
if ( !is_numeric($c) )
|
||||
return $c;
|
||||
|
||||
return max(0, $c - 0.33);
|
||||
}
|
||||
|
||||
protected function _border_inset($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
|
||||
list($top, $right, $bottom, $left) = $widths;
|
||||
|
||||
switch ($side) {
|
||||
|
||||
case "top":
|
||||
case "left":
|
||||
$shade = array_map(array($this, "_shade"), $color);
|
||||
$this->_border_solid($x, $y, $length, $shade, $widths, $side);
|
||||
break;
|
||||
|
||||
case "bottom":
|
||||
case "right":
|
||||
$tint = array_map(array($this, "_tint"), $color);
|
||||
$this->_border_solid($x, $y, $length, $tint, $widths, $side);
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
protected function _border_outset($x, $y, $length, $color, $widths, $side, $corner_style = "bevel") {
|
||||
list($top, $right, $bottom, $left) = $widths;
|
||||
|
||||
switch ($side) {
|
||||
case "top":
|
||||
case "left":
|
||||
$tint = array_map(array($this, "_tint"), $color);
|
||||
$this->_border_solid($x, $y, $length, $tint, $widths, $side);
|
||||
break;
|
||||
|
||||
case "bottom":
|
||||
case "right":
|
||||
$shade = array_map(array($this, "_shade"), $color);
|
||||
$this->_border_solid($x, $y, $length, $shade, $widths, $side);
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected function _set_opacity($opacity) {
|
||||
if ( is_numeric($opacity) && $opacity <= 1.0 && $opacity >= 0.0 ) {
|
||||
$this->_canvas->set_opacity( $opacity );
|
||||
}
|
||||
}
|
||||
|
||||
protected function _debug_layout($box, $color = "red", $style = array()) {
|
||||
$this->_canvas->rectangle($box[0], $box[1], $box[2], $box[3], CSS_Color::parse($color), 0.1, $style);
|
||||
}
|
||||
//........................................................................
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package dompdf
|
||||
* @link http://www.dompdf.com/
|
||||
* @author Benj Carson <benjcarson@digitaljunkies.ca>
|
||||
* @author ...
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: file.skel 448 2011-11-13 13:00:03Z fabien.menager $
|
||||
*/
|
|
@ -1,286 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package dompdf
|
||||
* @link http://www.dompdf.com/
|
||||
* @author Benj Carson <benjcarson@digitaljunkies.ca>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: renderer.cls.php 448 2011-11-13 13:00:03Z fabien.menager $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Concrete renderer
|
||||
*
|
||||
* Instantiates several specific renderers in order to render any given
|
||||
* frame.
|
||||
*
|
||||
* @access private
|
||||
* @package dompdf
|
||||
*/
|
||||
class Renderer extends Abstract_Renderer {
|
||||
|
||||
/**
|
||||
* Array of renderers for specific frame types
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $_renderers;
|
||||
|
||||
/**
|
||||
* Cache of the callbacks array
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private $_callbacks;
|
||||
|
||||
/**
|
||||
* true when a stacking context is currently built
|
||||
* @var bool
|
||||
*/
|
||||
public static $stacking_first_pass = true;
|
||||
|
||||
/**
|
||||
* Class destructor
|
||||
*/
|
||||
function __destruct() {
|
||||
clear_object($this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Advance the canvas to the next page
|
||||
*/
|
||||
function new_page() {
|
||||
$this->_canvas->new_page();
|
||||
}
|
||||
|
||||
/**
|
||||
* Render frames recursively
|
||||
*
|
||||
* @param Frame $frame the frame to render
|
||||
*/
|
||||
function render(Frame $frame, $stacking = false) {
|
||||
global $_dompdf_debug;
|
||||
|
||||
if ( $_dompdf_debug ) {
|
||||
echo $frame;
|
||||
flush();
|
||||
}
|
||||
|
||||
$style = $frame->get_style();
|
||||
|
||||
if ( in_array($style->visibility, array("hidden", "collapse")) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$render_self = self::$stacking_first_pass && !$stacking || !self::$stacking_first_pass;
|
||||
|
||||
if ( $render_self ) {
|
||||
$display = $style->display;
|
||||
|
||||
// Starts the CSS transformation
|
||||
if ( $style->transform && is_array($style->transform) ) {
|
||||
$this->_canvas->save();
|
||||
list($x, $y, $w, $h) = $frame->get_padding_box();
|
||||
$origin = $style->transform_origin;
|
||||
|
||||
foreach($style->transform as $transform) {
|
||||
list($function, $values) = $transform;
|
||||
if ( $function === "matrix" ) {
|
||||
$function = "transform";
|
||||
}
|
||||
|
||||
$values = array_map("floatval", $values);
|
||||
$values[] = $x + $style->length_in_pt($origin[0], $style->width);
|
||||
$values[] = $y + $style->length_in_pt($origin[1], $style->height);
|
||||
|
||||
call_user_func_array(array($this->_canvas, $function), $values);
|
||||
}
|
||||
}
|
||||
|
||||
switch ($display) {
|
||||
|
||||
case "block":
|
||||
case "list-item":
|
||||
case "inline-block":
|
||||
case "table":
|
||||
case "inline-table":
|
||||
$this->_render_frame("block", $frame);
|
||||
break;
|
||||
|
||||
case "inline":
|
||||
if ( $frame->is_text_node() )
|
||||
$this->_render_frame("text", $frame);
|
||||
else
|
||||
$this->_render_frame("inline", $frame);
|
||||
break;
|
||||
|
||||
case "table-cell":
|
||||
$this->_render_frame("table-cell", $frame);
|
||||
break;
|
||||
|
||||
case "table-row-group":
|
||||
case "table-header-group":
|
||||
case "table-footer-group":
|
||||
$this->_render_frame("table-row-group", $frame);
|
||||
break;
|
||||
|
||||
case "-dompdf-list-bullet":
|
||||
$this->_render_frame("list-bullet", $frame);
|
||||
break;
|
||||
|
||||
case "-dompdf-image":
|
||||
$this->_render_frame("image", $frame);
|
||||
break;
|
||||
|
||||
case "none":
|
||||
$node = $frame->get_node();
|
||||
|
||||
if ( $node->nodeName === "script" ) {
|
||||
if ( $node->getAttribute("type") === "text/php" ||
|
||||
$node->getAttribute("language") === "php" ) {
|
||||
// Evaluate embedded php scripts
|
||||
$this->_render_frame("php", $frame);
|
||||
}
|
||||
|
||||
elseif ( $node->getAttribute("type") === "text/javascript" ||
|
||||
$node->getAttribute("language") === "javascript" ) {
|
||||
// Insert JavaScript
|
||||
$this->_render_frame("javascript", $frame);
|
||||
}
|
||||
}
|
||||
|
||||
// Don't render children, so skip to next iter
|
||||
return;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
// Check for begin frame callback
|
||||
$this->_check_callbacks("begin_frame", $frame);
|
||||
|
||||
// Starts the overflow: hidden box
|
||||
if ( $style->overflow === "hidden" ) {
|
||||
list($x, $y, $w, $h) = $frame->get_padding_box();
|
||||
$this->_canvas->clipping_rectangle($x, $y, $w, $h);
|
||||
}
|
||||
}
|
||||
|
||||
$page = $frame->get_root()->get_reflower();
|
||||
|
||||
foreach ($frame->get_children() as $child) {
|
||||
$child_style = $child->get_style();
|
||||
$_stacking = $stacking;
|
||||
|
||||
// Stacking context
|
||||
if ( self::$stacking_first_pass && (
|
||||
$child_style->z_index !== "auto" ||
|
||||
$child_style->float !== "none" ||
|
||||
$child->is_positionned()) ) {
|
||||
$z_index = ($child_style->z_index === "auto") ? 0 : intval($child_style->z_index);
|
||||
$page->add_frame_to_stacking_context($child, $z_index);
|
||||
$_stacking = true;
|
||||
}
|
||||
|
||||
$this->render($child, $_stacking);
|
||||
}
|
||||
|
||||
if ( $render_self ) {
|
||||
// Ends the overflow: hidden box
|
||||
if ( $style->overflow === "hidden" ) {
|
||||
$this->_canvas->clipping_end();
|
||||
}
|
||||
|
||||
if ( $style->transform && is_array($style->transform) ) {
|
||||
$this->_canvas->restore();
|
||||
}
|
||||
|
||||
// Check for end frame callback
|
||||
$this->_check_callbacks("end_frame", $frame);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for callbacks that need to be performed when a given event
|
||||
* gets triggered on a frame
|
||||
*
|
||||
* @param string $event the type of event
|
||||
* @param Frame $frame the frame that event is triggered on
|
||||
*/
|
||||
protected function _check_callbacks($event, $frame) {
|
||||
if (!isset($this->_callbacks)) {
|
||||
$this->_callbacks = $this->_dompdf->get_callbacks();
|
||||
}
|
||||
|
||||
if (is_array($this->_callbacks) && isset($this->_callbacks[$event])) {
|
||||
$info = array(0 => $this->_canvas, "canvas" => $this->_canvas,
|
||||
1 => $frame, "frame" => $frame);
|
||||
$fs = $this->_callbacks[$event];
|
||||
foreach ($fs as $f) {
|
||||
if (is_callable($f)) {
|
||||
if (is_array($f)) {
|
||||
$f[0]->$f[1]($info);
|
||||
} else {
|
||||
$f($info);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render a single frame
|
||||
*
|
||||
* Creates Renderer objects on demand
|
||||
*
|
||||
* @param string $type type of renderer to use
|
||||
* @param Frame $frame the frame to render
|
||||
*/
|
||||
protected function _render_frame($type, $frame) {
|
||||
|
||||
if ( !isset($this->_renderers[$type]) ) {
|
||||
|
||||
switch ($type) {
|
||||
case "block":
|
||||
$this->_renderers[$type] = new Block_Renderer($this->_dompdf);
|
||||
break;
|
||||
|
||||
case "inline":
|
||||
$this->_renderers[$type] = new Inline_Renderer($this->_dompdf);
|
||||
break;
|
||||
|
||||
case "text":
|
||||
$this->_renderers[$type] = new Text_Renderer($this->_dompdf);
|
||||
break;
|
||||
|
||||
case "image":
|
||||
$this->_renderers[$type] = new Image_Renderer($this->_dompdf);
|
||||
break;
|
||||
|
||||
case "table-cell":
|
||||
$this->_renderers[$type] = new Table_Cell_Renderer($this->_dompdf);
|
||||
break;
|
||||
|
||||
case "table-row-group":
|
||||
$this->_renderers[$type] = new Table_Row_Group_Renderer($this->_dompdf);
|
||||
break;
|
||||
|
||||
case "list-bullet":
|
||||
$this->_renderers[$type] = new List_Bullet_Renderer($this->_dompdf);
|
||||
break;
|
||||
|
||||
case "php":
|
||||
$this->_renderers[$type] = new PHP_Evaluator($this->_canvas);
|
||||
break;
|
||||
|
||||
case "javascript":
|
||||
$this->_renderers[$type] = new Javascript_Embedder($this->_dompdf);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$this->_renderers[$type]->render($frame);
|
||||
|
||||
}
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
<?php header("Location: www/"); ?>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,570 +0,0 @@
|
|||
<?php return array (
|
||||
'codeToName' =>
|
||||
array (
|
||||
32 => 'space',
|
||||
160 => 'space',
|
||||
33 => 'exclam',
|
||||
34 => 'quotedbl',
|
||||
35 => 'numbersign',
|
||||
36 => 'dollar',
|
||||
37 => 'percent',
|
||||
38 => 'ampersand',
|
||||
146 => 'quoteright',
|
||||
40 => 'parenleft',
|
||||
41 => 'parenright',
|
||||
42 => 'asterisk',
|
||||
43 => 'plus',
|
||||
44 => 'comma',
|
||||
45 => 'hyphen',
|
||||
173 => 'hyphen',
|
||||
46 => 'period',
|
||||
47 => 'slash',
|
||||
48 => 'zero',
|
||||
49 => 'one',
|
||||
50 => 'two',
|
||||
51 => 'three',
|
||||
52 => 'four',
|
||||
53 => 'five',
|
||||
54 => 'six',
|
||||
55 => 'seven',
|
||||
56 => 'eight',
|
||||
57 => 'nine',
|
||||
58 => 'colon',
|
||||
59 => 'semicolon',
|
||||
60 => 'less',
|
||||
61 => 'equal',
|
||||
62 => 'greater',
|
||||
63 => 'question',
|
||||
64 => 'at',
|
||||
65 => 'A',
|
||||
66 => 'B',
|
||||
67 => 'C',
|
||||
68 => 'D',
|
||||
69 => 'E',
|
||||
70 => 'F',
|
||||
71 => 'G',
|
||||
72 => 'H',
|
||||
73 => 'I',
|
||||
74 => 'J',
|
||||
75 => 'K',
|
||||
76 => 'L',
|
||||
77 => 'M',
|
||||
78 => 'N',
|
||||
79 => 'O',
|
||||
80 => 'P',
|
||||
81 => 'Q',
|
||||
82 => 'R',
|
||||
83 => 'S',
|
||||
84 => 'T',
|
||||
85 => 'U',
|
||||
86 => 'V',
|
||||
87 => 'W',
|
||||
88 => 'X',
|
||||
89 => 'Y',
|
||||
90 => 'Z',
|
||||
91 => 'bracketleft',
|
||||
92 => 'backslash',
|
||||
93 => 'bracketright',
|
||||
94 => 'asciicircum',
|
||||
95 => 'underscore',
|
||||
145 => 'quoteleft',
|
||||
97 => 'a',
|
||||
98 => 'b',
|
||||
99 => 'c',
|
||||
100 => 'd',
|
||||
101 => 'e',
|
||||
102 => 'f',
|
||||
103 => 'g',
|
||||
104 => 'h',
|
||||
105 => 'i',
|
||||
106 => 'j',
|
||||
107 => 'k',
|
||||
108 => 'l',
|
||||
109 => 'm',
|
||||
110 => 'n',
|
||||
111 => 'o',
|
||||
112 => 'p',
|
||||
113 => 'q',
|
||||
114 => 'r',
|
||||
115 => 's',
|
||||
116 => 't',
|
||||
117 => 'u',
|
||||
118 => 'v',
|
||||
119 => 'w',
|
||||
120 => 'x',
|
||||
121 => 'y',
|
||||
122 => 'z',
|
||||
123 => 'braceleft',
|
||||
124 => 'bar',
|
||||
125 => 'braceright',
|
||||
126 => 'asciitilde',
|
||||
161 => 'exclamdown',
|
||||
162 => 'cent',
|
||||
163 => 'sterling',
|
||||
165 => 'yen',
|
||||
131 => 'florin',
|
||||
167 => 'section',
|
||||
164 => 'currency',
|
||||
39 => 'quotesingle',
|
||||
147 => 'quotedblleft',
|
||||
170 => 'ordfeminine',
|
||||
139 => 'guilsinglleft',
|
||||
155 => 'guilsinglright',
|
||||
150 => 'endash',
|
||||
134 => 'dagger',
|
||||
135 => 'daggerdbl',
|
||||
183 => 'periodcentered',
|
||||
182 => 'paragraph',
|
||||
149 => 'bullet',
|
||||
130 => 'quotesinglbase',
|
||||
132 => 'quotedblbase',
|
||||
148 => 'quotedblright',
|
||||
187 => 'guillemotright',
|
||||
133 => 'ellipsis',
|
||||
137 => 'perthousand',
|
||||
191 => 'questiondown',
|
||||
96 => 'grave',
|
||||
180 => 'acute',
|
||||
136 => 'circumflex',
|
||||
152 => 'tilde',
|
||||
175 => 'macron',
|
||||
168 => 'dieresis',
|
||||
184 => 'cedilla',
|
||||
151 => 'emdash',
|
||||
198 => 'AE',
|
||||
216 => 'Oslash',
|
||||
140 => 'OE',
|
||||
186 => 'ordmasculine',
|
||||
230 => 'ae',
|
||||
248 => 'oslash',
|
||||
156 => 'oe',
|
||||
223 => 'germandbls',
|
||||
207 => 'Idieresis',
|
||||
233 => 'eacute',
|
||||
159 => 'Ydieresis',
|
||||
247 => 'divide',
|
||||
221 => 'Yacute',
|
||||
194 => 'Acircumflex',
|
||||
225 => 'aacute',
|
||||
219 => 'Ucircumflex',
|
||||
253 => 'yacute',
|
||||
234 => 'ecircumflex',
|
||||
220 => 'Udieresis',
|
||||
218 => 'Uacute',
|
||||
203 => 'Edieresis',
|
||||
169 => 'copyright',
|
||||
229 => 'aring',
|
||||
224 => 'agrave',
|
||||
227 => 'atilde',
|
||||
154 => 'scaron',
|
||||
237 => 'iacute',
|
||||
251 => 'ucircumflex',
|
||||
226 => 'acircumflex',
|
||||
231 => 'ccedilla',
|
||||
222 => 'Thorn',
|
||||
179 => 'threesuperior',
|
||||
210 => 'Ograve',
|
||||
192 => 'Agrave',
|
||||
215 => 'multiply',
|
||||
250 => 'uacute',
|
||||
255 => 'ydieresis',
|
||||
238 => 'icircumflex',
|
||||
202 => 'Ecircumflex',
|
||||
228 => 'adieresis',
|
||||
235 => 'edieresis',
|
||||
205 => 'Iacute',
|
||||
177 => 'plusminus',
|
||||
166 => 'brokenbar',
|
||||
174 => 'registered',
|
||||
200 => 'Egrave',
|
||||
142 => 'Zcaron',
|
||||
208 => 'Eth',
|
||||
199 => 'Ccedilla',
|
||||
193 => 'Aacute',
|
||||
196 => 'Adieresis',
|
||||
232 => 'egrave',
|
||||
211 => 'Oacute',
|
||||
243 => 'oacute',
|
||||
239 => 'idieresis',
|
||||
212 => 'Ocircumflex',
|
||||
217 => 'Ugrave',
|
||||
254 => 'thorn',
|
||||
178 => 'twosuperior',
|
||||
214 => 'Odieresis',
|
||||
181 => 'mu',
|
||||
236 => 'igrave',
|
||||
190 => 'threequarters',
|
||||
153 => 'trademark',
|
||||
204 => 'Igrave',
|
||||
189 => 'onehalf',
|
||||
244 => 'ocircumflex',
|
||||
241 => 'ntilde',
|
||||
201 => 'Eacute',
|
||||
188 => 'onequarter',
|
||||
138 => 'Scaron',
|
||||
176 => 'degree',
|
||||
242 => 'ograve',
|
||||
249 => 'ugrave',
|
||||
209 => 'Ntilde',
|
||||
245 => 'otilde',
|
||||
195 => 'Atilde',
|
||||
197 => 'Aring',
|
||||
213 => 'Otilde',
|
||||
206 => 'Icircumflex',
|
||||
172 => 'logicalnot',
|
||||
246 => 'odieresis',
|
||||
252 => 'udieresis',
|
||||
240 => 'eth',
|
||||
158 => 'zcaron',
|
||||
185 => 'onesuperior',
|
||||
128 => 'Euro',
|
||||
),
|
||||
'isUnicode' => false,
|
||||
'FontName' => 'Helvetica-Bold',
|
||||
'FullName' => 'Helvetica Bold',
|
||||
'FamilyName' => 'Helvetica',
|
||||
'Weight' => 'Bold',
|
||||
'ItalicAngle' => '0',
|
||||
'IsFixedPitch' => 'false',
|
||||
'CharacterSet' => 'ExtendedRoman',
|
||||
'FontBBox' =>
|
||||
array (
|
||||
0 => '-170',
|
||||
1 => '-228',
|
||||
2 => '1003',
|
||||
3 => '962',
|
||||
),
|
||||
'UnderlinePosition' => '-100',
|
||||
'UnderlineThickness' => '50',
|
||||
'Version' => '002.000',
|
||||
'EncodingScheme' => 'WinAnsiEncoding',
|
||||
'CapHeight' => '718',
|
||||
'XHeight' => '532',
|
||||
'Ascender' => '718',
|
||||
'Descender' => '-207',
|
||||
'StdHW' => '118',
|
||||
'StdVW' => '140',
|
||||
'StartCharMetrics' => '317',
|
||||
'C' =>
|
||||
array (
|
||||
32 => 278,
|
||||
160 => 278,
|
||||
33 => 333,
|
||||
34 => 474,
|
||||
35 => 556,
|
||||
36 => 556,
|
||||
37 => 889,
|
||||
38 => 722,
|
||||
146 => 278,
|
||||
40 => 333,
|
||||
41 => 333,
|
||||
42 => 389,
|
||||
43 => 584,
|
||||
44 => 278,
|
||||
45 => 333,
|
||||
173 => 333,
|
||||
46 => 278,
|
||||
47 => 278,
|
||||
48 => 556,
|
||||
49 => 556,
|
||||
50 => 556,
|
||||
51 => 556,
|
||||
52 => 556,
|
||||
53 => 556,
|
||||
54 => 556,
|
||||
55 => 556,
|
||||
56 => 556,
|
||||
57 => 556,
|
||||
58 => 333,
|
||||
59 => 333,
|
||||
60 => 584,
|
||||
61 => 584,
|
||||
62 => 584,
|
||||
63 => 611,
|
||||
64 => 975,
|
||||
65 => 722,
|
||||
66 => 722,
|
||||
67 => 722,
|
||||
68 => 722,
|
||||
69 => 667,
|
||||
70 => 611,
|
||||
71 => 778,
|
||||
72 => 722,
|
||||
73 => 278,
|
||||
74 => 556,
|
||||
75 => 722,
|
||||
76 => 611,
|
||||
77 => 833,
|
||||
78 => 722,
|
||||
79 => 778,
|
||||
80 => 667,
|
||||
81 => 778,
|
||||
82 => 722,
|
||||
83 => 667,
|
||||
84 => 611,
|
||||
85 => 722,
|
||||
86 => 667,
|
||||
87 => 944,
|
||||
88 => 667,
|
||||
89 => 667,
|
||||
90 => 611,
|
||||
91 => 333,
|
||||
92 => 278,
|
||||
93 => 333,
|
||||
94 => 584,
|
||||
95 => 556,
|
||||
145 => 278,
|
||||
97 => 556,
|
||||
98 => 611,
|
||||
99 => 556,
|
||||
100 => 611,
|
||||
101 => 556,
|
||||
102 => 333,
|
||||
103 => 611,
|
||||
104 => 611,
|
||||
105 => 278,
|
||||
106 => 278,
|
||||
107 => 556,
|
||||
108 => 278,
|
||||
109 => 889,
|
||||
110 => 611,
|
||||
111 => 611,
|
||||
112 => 611,
|
||||
113 => 611,
|
||||
114 => 389,
|
||||
115 => 556,
|
||||
116 => 333,
|
||||
117 => 611,
|
||||
118 => 556,
|
||||
119 => 778,
|
||||
120 => 556,
|
||||
121 => 556,
|
||||
122 => 500,
|
||||
123 => 389,
|
||||
124 => 280,
|
||||
125 => 389,
|
||||
126 => 584,
|
||||
161 => 333,
|
||||
162 => 556,
|
||||
163 => 556,
|
||||
'fraction' => 167,
|
||||
165 => 556,
|
||||
131 => 556,
|
||||
167 => 556,
|
||||
164 => 556,
|
||||
39 => 238,
|
||||
147 => 500,
|
||||
170 => 370,
|
||||
139 => 333,
|
||||
155 => 333,
|
||||
'fi' => 611,
|
||||
'fl' => 611,
|
||||
150 => 556,
|
||||
134 => 556,
|
||||
135 => 556,
|
||||
183 => 278,
|
||||
182 => 556,
|
||||
149 => 350,
|
||||
130 => 278,
|
||||
132 => 500,
|
||||
148 => 500,
|
||||
187 => 556,
|
||||
133 => 1000,
|
||||
137 => 1000,
|
||||
191 => 611,
|
||||
96 => 333,
|
||||
180 => 333,
|
||||
136 => 333,
|
||||
152 => 333,
|
||||
175 => 333,
|
||||
'breve' => 333,
|
||||
'dotaccent' => 333,
|
||||
168 => 333,
|
||||
'ring' => 333,
|
||||
184 => 333,
|
||||
'hungarumlaut' => 333,
|
||||
'ogonek' => 333,
|
||||
'caron' => 333,
|
||||
151 => 1000,
|
||||
198 => 1000,
|
||||
'Lslash' => 611,
|
||||
216 => 778,
|
||||
140 => 1000,
|
||||
186 => 365,
|
||||
230 => 889,
|
||||
'dotlessi' => 278,
|
||||
'lslash' => 278,
|
||||
248 => 611,
|
||||
156 => 944,
|
||||
223 => 611,
|
||||
207 => 278,
|
||||
233 => 556,
|
||||
'abreve' => 556,
|
||||
'uhungarumlaut' => 611,
|
||||
'ecaron' => 556,
|
||||
159 => 667,
|
||||
247 => 584,
|
||||
221 => 667,
|
||||
194 => 722,
|
||||
225 => 556,
|
||||
219 => 722,
|
||||
253 => 556,
|
||||
'scommaaccent' => 556,
|
||||
234 => 556,
|
||||
'Uring' => 722,
|
||||
220 => 722,
|
||||
'aogonek' => 556,
|
||||
218 => 722,
|
||||
'uogonek' => 611,
|
||||
203 => 667,
|
||||
'Dcroat' => 722,
|
||||
'commaaccent' => 250,
|
||||
169 => 737,
|
||||
'Emacron' => 667,
|
||||
'ccaron' => 556,
|
||||
229 => 556,
|
||||
'Ncommaaccent' => 722,
|
||||
'lacute' => 278,
|
||||
224 => 556,
|
||||
'Tcommaaccent' => 611,
|
||||
'Cacute' => 722,
|
||||
227 => 556,
|
||||
'Edotaccent' => 667,
|
||||
154 => 556,
|
||||
'scedilla' => 556,
|
||||
237 => 278,
|
||||
'lozenge' => 494,
|
||||
'Rcaron' => 722,
|
||||
'Gcommaaccent' => 778,
|
||||
251 => 611,
|
||||
226 => 556,
|
||||
'Amacron' => 722,
|
||||
'rcaron' => 389,
|
||||
231 => 556,
|
||||
'Zdotaccent' => 611,
|
||||
222 => 667,
|
||||
'Omacron' => 778,
|
||||
'Racute' => 722,
|
||||
'Sacute' => 667,
|
||||
'dcaron' => 743,
|
||||
'Umacron' => 722,
|
||||
'uring' => 611,
|
||||
179 => 333,
|
||||
210 => 778,
|
||||
192 => 722,
|
||||
'Abreve' => 722,
|
||||
215 => 584,
|
||||
250 => 611,
|
||||
'Tcaron' => 611,
|
||||
'partialdiff' => 494,
|
||||
255 => 556,
|
||||
'Nacute' => 722,
|
||||
238 => 278,
|
||||
202 => 667,
|
||||
228 => 556,
|
||||
235 => 556,
|
||||
'cacute' => 556,
|
||||
'nacute' => 611,
|
||||
'umacron' => 611,
|
||||
'Ncaron' => 722,
|
||||
205 => 278,
|
||||
177 => 584,
|
||||
166 => 280,
|
||||
174 => 737,
|
||||
'Gbreve' => 778,
|
||||
'Idotaccent' => 278,
|
||||
'summation' => 600,
|
||||
200 => 667,
|
||||
'racute' => 389,
|
||||
'omacron' => 611,
|
||||
'Zacute' => 611,
|
||||
142 => 611,
|
||||
'greaterequal' => 549,
|
||||
208 => 722,
|
||||
199 => 722,
|
||||
'lcommaaccent' => 278,
|
||||
'tcaron' => 389,
|
||||
'eogonek' => 556,
|
||||
'Uogonek' => 722,
|
||||
193 => 722,
|
||||
196 => 722,
|
||||
232 => 556,
|
||||
'zacute' => 500,
|
||||
'iogonek' => 278,
|
||||
211 => 778,
|
||||
243 => 611,
|
||||
'amacron' => 556,
|
||||
'sacute' => 556,
|
||||
239 => 278,
|
||||
212 => 778,
|
||||
217 => 722,
|
||||
'Delta' => 612,
|
||||
254 => 611,
|
||||
178 => 333,
|
||||
214 => 778,
|
||||
181 => 611,
|
||||
236 => 278,
|
||||
'ohungarumlaut' => 611,
|
||||
'Eogonek' => 667,
|
||||
'dcroat' => 611,
|
||||
190 => 834,
|
||||
'Scedilla' => 667,
|
||||
'lcaron' => 400,
|
||||
'Kcommaaccent' => 722,
|
||||
'Lacute' => 611,
|
||||
153 => 1000,
|
||||
'edotaccent' => 556,
|
||||
204 => 278,
|
||||
'Imacron' => 278,
|
||||
'Lcaron' => 611,
|
||||
189 => 834,
|
||||
'lessequal' => 549,
|
||||
244 => 611,
|
||||
241 => 611,
|
||||
'Uhungarumlaut' => 722,
|
||||
201 => 667,
|
||||
'emacron' => 556,
|
||||
'gbreve' => 611,
|
||||
188 => 834,
|
||||
138 => 667,
|
||||
'Scommaaccent' => 667,
|
||||
'Ohungarumlaut' => 778,
|
||||
176 => 400,
|
||||
242 => 611,
|
||||
'Ccaron' => 722,
|
||||
249 => 611,
|
||||
'radical' => 549,
|
||||
'Dcaron' => 722,
|
||||
'rcommaaccent' => 389,
|
||||
209 => 722,
|
||||
245 => 611,
|
||||
'Rcommaaccent' => 722,
|
||||
'Lcommaaccent' => 611,
|
||||
195 => 722,
|
||||
'Aogonek' => 722,
|
||||
197 => 722,
|
||||
213 => 778,
|
||||
'zdotaccent' => 500,
|
||||
'Ecaron' => 667,
|
||||
'Iogonek' => 278,
|
||||
'kcommaaccent' => 556,
|
||||
'minus' => 584,
|
||||
206 => 278,
|
||||
'ncaron' => 611,
|
||||
'tcommaaccent' => 333,
|
||||
172 => 584,
|
||||
246 => 611,
|
||||
252 => 611,
|
||||
'notequal' => 549,
|
||||
'gcommaaccent' => 611,
|
||||
240 => 611,
|
||||
158 => 500,
|
||||
'ncommaaccent' => 611,
|
||||
185 => 333,
|
||||
'imacron' => 278,
|
||||
128 => 556,
|
||||
),
|
||||
'CIDtoGID_Compressed' => true,
|
||||
'CIDtoGID' => 'eJwDAAAAAAE=',
|
||||
'_version_' => 5,
|
||||
);
|
|
@ -1,570 +0,0 @@
|
|||
<?php return array (
|
||||
'codeToName' =>
|
||||
array (
|
||||
32 => 'space',
|
||||
160 => 'space',
|
||||
33 => 'exclam',
|
||||
34 => 'quotedbl',
|
||||
35 => 'numbersign',
|
||||
36 => 'dollar',
|
||||
37 => 'percent',
|
||||
38 => 'ampersand',
|
||||
146 => 'quoteright',
|
||||
40 => 'parenleft',
|
||||
41 => 'parenright',
|
||||
42 => 'asterisk',
|
||||
43 => 'plus',
|
||||
44 => 'comma',
|
||||
45 => 'hyphen',
|
||||
173 => 'hyphen',
|
||||
46 => 'period',
|
||||
47 => 'slash',
|
||||
48 => 'zero',
|
||||
49 => 'one',
|
||||
50 => 'two',
|
||||
51 => 'three',
|
||||
52 => 'four',
|
||||
53 => 'five',
|
||||
54 => 'six',
|
||||
55 => 'seven',
|
||||
56 => 'eight',
|
||||
57 => 'nine',
|
||||
58 => 'colon',
|
||||
59 => 'semicolon',
|
||||
60 => 'less',
|
||||
61 => 'equal',
|
||||
62 => 'greater',
|
||||
63 => 'question',
|
||||
64 => 'at',
|
||||
65 => 'A',
|
||||
66 => 'B',
|
||||
67 => 'C',
|
||||
68 => 'D',
|
||||
69 => 'E',
|
||||
70 => 'F',
|
||||
71 => 'G',
|
||||
72 => 'H',
|
||||
73 => 'I',
|
||||
74 => 'J',
|
||||
75 => 'K',
|
||||
76 => 'L',
|
||||
77 => 'M',
|
||||
78 => 'N',
|
||||
79 => 'O',
|
||||
80 => 'P',
|
||||
81 => 'Q',
|
||||
82 => 'R',
|
||||
83 => 'S',
|
||||
84 => 'T',
|
||||
85 => 'U',
|
||||
86 => 'V',
|
||||
87 => 'W',
|
||||
88 => 'X',
|
||||
89 => 'Y',
|
||||
90 => 'Z',
|
||||
91 => 'bracketleft',
|
||||
92 => 'backslash',
|
||||
93 => 'bracketright',
|
||||
94 => 'asciicircum',
|
||||
95 => 'underscore',
|
||||
145 => 'quoteleft',
|
||||
97 => 'a',
|
||||
98 => 'b',
|
||||
99 => 'c',
|
||||
100 => 'd',
|
||||
101 => 'e',
|
||||
102 => 'f',
|
||||
103 => 'g',
|
||||
104 => 'h',
|
||||
105 => 'i',
|
||||
106 => 'j',
|
||||
107 => 'k',
|
||||
108 => 'l',
|
||||
109 => 'm',
|
||||
110 => 'n',
|
||||
111 => 'o',
|
||||
112 => 'p',
|
||||
113 => 'q',
|
||||
114 => 'r',
|
||||
115 => 's',
|
||||
116 => 't',
|
||||
117 => 'u',
|
||||
118 => 'v',
|
||||
119 => 'w',
|
||||
120 => 'x',
|
||||
121 => 'y',
|
||||
122 => 'z',
|
||||
123 => 'braceleft',
|
||||
124 => 'bar',
|
||||
125 => 'braceright',
|
||||
126 => 'asciitilde',
|
||||
161 => 'exclamdown',
|
||||
162 => 'cent',
|
||||
163 => 'sterling',
|
||||
165 => 'yen',
|
||||
131 => 'florin',
|
||||
167 => 'section',
|
||||
164 => 'currency',
|
||||
39 => 'quotesingle',
|
||||
147 => 'quotedblleft',
|
||||
170 => 'ordfeminine',
|
||||
139 => 'guilsinglleft',
|
||||
155 => 'guilsinglright',
|
||||
150 => 'endash',
|
||||
134 => 'dagger',
|
||||
135 => 'daggerdbl',
|
||||
183 => 'periodcentered',
|
||||
182 => 'paragraph',
|
||||
149 => 'bullet',
|
||||
130 => 'quotesinglbase',
|
||||
132 => 'quotedblbase',
|
||||
148 => 'quotedblright',
|
||||
187 => 'guillemotright',
|
||||
133 => 'ellipsis',
|
||||
137 => 'perthousand',
|
||||
191 => 'questiondown',
|
||||
96 => 'grave',
|
||||
180 => 'acute',
|
||||
136 => 'circumflex',
|
||||
152 => 'tilde',
|
||||
175 => 'macron',
|
||||
168 => 'dieresis',
|
||||
184 => 'cedilla',
|
||||
151 => 'emdash',
|
||||
198 => 'AE',
|
||||
216 => 'Oslash',
|
||||
140 => 'OE',
|
||||
186 => 'ordmasculine',
|
||||
230 => 'ae',
|
||||
248 => 'oslash',
|
||||
156 => 'oe',
|
||||
223 => 'germandbls',
|
||||
207 => 'Idieresis',
|
||||
233 => 'eacute',
|
||||
159 => 'Ydieresis',
|
||||
247 => 'divide',
|
||||
221 => 'Yacute',
|
||||
194 => 'Acircumflex',
|
||||
225 => 'aacute',
|
||||
219 => 'Ucircumflex',
|
||||
253 => 'yacute',
|
||||
234 => 'ecircumflex',
|
||||
220 => 'Udieresis',
|
||||
218 => 'Uacute',
|
||||
203 => 'Edieresis',
|
||||
169 => 'copyright',
|
||||
229 => 'aring',
|
||||
224 => 'agrave',
|
||||
227 => 'atilde',
|
||||
154 => 'scaron',
|
||||
237 => 'iacute',
|
||||
251 => 'ucircumflex',
|
||||
226 => 'acircumflex',
|
||||
231 => 'ccedilla',
|
||||
222 => 'Thorn',
|
||||
179 => 'threesuperior',
|
||||
210 => 'Ograve',
|
||||
192 => 'Agrave',
|
||||
215 => 'multiply',
|
||||
250 => 'uacute',
|
||||
255 => 'ydieresis',
|
||||
238 => 'icircumflex',
|
||||
202 => 'Ecircumflex',
|
||||
228 => 'adieresis',
|
||||
235 => 'edieresis',
|
||||
205 => 'Iacute',
|
||||
177 => 'plusminus',
|
||||
166 => 'brokenbar',
|
||||
174 => 'registered',
|
||||
200 => 'Egrave',
|
||||
142 => 'Zcaron',
|
||||
208 => 'Eth',
|
||||
199 => 'Ccedilla',
|
||||
193 => 'Aacute',
|
||||
196 => 'Adieresis',
|
||||
232 => 'egrave',
|
||||
211 => 'Oacute',
|
||||
243 => 'oacute',
|
||||
239 => 'idieresis',
|
||||
212 => 'Ocircumflex',
|
||||
217 => 'Ugrave',
|
||||
254 => 'thorn',
|
||||
178 => 'twosuperior',
|
||||
214 => 'Odieresis',
|
||||
181 => 'mu',
|
||||
236 => 'igrave',
|
||||
190 => 'threequarters',
|
||||
153 => 'trademark',
|
||||
204 => 'Igrave',
|
||||
189 => 'onehalf',
|
||||
244 => 'ocircumflex',
|
||||
241 => 'ntilde',
|
||||
201 => 'Eacute',
|
||||
188 => 'onequarter',
|
||||
138 => 'Scaron',
|
||||
176 => 'degree',
|
||||
242 => 'ograve',
|
||||
249 => 'ugrave',
|
||||
209 => 'Ntilde',
|
||||
245 => 'otilde',
|
||||
195 => 'Atilde',
|
||||
197 => 'Aring',
|
||||
213 => 'Otilde',
|
||||
206 => 'Icircumflex',
|
||||
172 => 'logicalnot',
|
||||
246 => 'odieresis',
|
||||
252 => 'udieresis',
|
||||
240 => 'eth',
|
||||
158 => 'zcaron',
|
||||
185 => 'onesuperior',
|
||||
128 => 'Euro',
|
||||
),
|
||||
'isUnicode' => false,
|
||||
'FontName' => 'Helvetica',
|
||||
'FullName' => 'Helvetica',
|
||||
'FamilyName' => 'Helvetica',
|
||||
'Weight' => 'Medium',
|
||||
'ItalicAngle' => '0',
|
||||
'IsFixedPitch' => 'false',
|
||||
'CharacterSet' => 'ExtendedRoman',
|
||||
'FontBBox' =>
|
||||
array (
|
||||
0 => '-166',
|
||||
1 => '-225',
|
||||
2 => '1000',
|
||||
3 => '931',
|
||||
),
|
||||
'UnderlinePosition' => '-100',
|
||||
'UnderlineThickness' => '50',
|
||||
'Version' => '002.000',
|
||||
'EncodingScheme' => 'WinAnsiEncoding',
|
||||
'CapHeight' => '718',
|
||||
'XHeight' => '523',
|
||||
'Ascender' => '718',
|
||||
'Descender' => '-207',
|
||||
'StdHW' => '76',
|
||||
'StdVW' => '88',
|
||||
'StartCharMetrics' => '317',
|
||||
'C' =>
|
||||
array (
|
||||
32 => 278,
|
||||
160 => 278,
|
||||
33 => 278,
|
||||
34 => 355,
|
||||
35 => 556,
|
||||
36 => 556,
|
||||
37 => 889,
|
||||
38 => 667,
|
||||
146 => 222,
|
||||
40 => 333,
|
||||
41 => 333,
|
||||
42 => 389,
|
||||
43 => 584,
|
||||
44 => 278,
|
||||
45 => 333,
|
||||
173 => 333,
|
||||
46 => 278,
|
||||
47 => 278,
|
||||
48 => 556,
|
||||
49 => 556,
|
||||
50 => 556,
|
||||
51 => 556,
|
||||
52 => 556,
|
||||
53 => 556,
|
||||
54 => 556,
|
||||
55 => 556,
|
||||
56 => 556,
|
||||
57 => 556,
|
||||
58 => 278,
|
||||
59 => 278,
|
||||
60 => 584,
|
||||
61 => 584,
|
||||
62 => 584,
|
||||
63 => 556,
|
||||
64 => 1015,
|
||||
65 => 667,
|
||||
66 => 667,
|
||||
67 => 722,
|
||||
68 => 722,
|
||||
69 => 667,
|
||||
70 => 611,
|
||||
71 => 778,
|
||||
72 => 722,
|
||||
73 => 278,
|
||||
74 => 500,
|
||||
75 => 667,
|
||||
76 => 556,
|
||||
77 => 833,
|
||||
78 => 722,
|
||||
79 => 778,
|
||||
80 => 667,
|
||||
81 => 778,
|
||||
82 => 722,
|
||||
83 => 667,
|
||||
84 => 611,
|
||||
85 => 722,
|
||||
86 => 667,
|
||||
87 => 944,
|
||||
88 => 667,
|
||||
89 => 667,
|
||||
90 => 611,
|
||||
91 => 278,
|
||||
92 => 278,
|
||||
93 => 278,
|
||||
94 => 469,
|
||||
95 => 556,
|
||||
145 => 222,
|
||||
97 => 556,
|
||||
98 => 556,
|
||||
99 => 500,
|
||||
100 => 556,
|
||||
101 => 556,
|
||||
102 => 278,
|
||||
103 => 556,
|
||||
104 => 556,
|
||||
105 => 222,
|
||||
106 => 222,
|
||||
107 => 500,
|
||||
108 => 222,
|
||||
109 => 833,
|
||||
110 => 556,
|
||||
111 => 556,
|
||||
112 => 556,
|
||||
113 => 556,
|
||||
114 => 333,
|
||||
115 => 500,
|
||||
116 => 278,
|
||||
117 => 556,
|
||||
118 => 500,
|
||||
119 => 722,
|
||||
120 => 500,
|
||||
121 => 500,
|
||||
122 => 500,
|
||||
123 => 334,
|
||||
124 => 260,
|
||||
125 => 334,
|
||||
126 => 584,
|
||||
161 => 333,
|
||||
162 => 556,
|
||||
163 => 556,
|
||||
'fraction' => 167,
|
||||
165 => 556,
|
||||
131 => 556,
|
||||
167 => 556,
|
||||
164 => 556,
|
||||
39 => 191,
|
||||
147 => 333,
|
||||
170 => 370,
|
||||
139 => 333,
|
||||
155 => 333,
|
||||
'fi' => 500,
|
||||
'fl' => 500,
|
||||
150 => 556,
|
||||
134 => 556,
|
||||
135 => 556,
|
||||
183 => 278,
|
||||
182 => 537,
|
||||
149 => 350,
|
||||
130 => 222,
|
||||
132 => 333,
|
||||
148 => 333,
|
||||
187 => 556,
|
||||
133 => 1000,
|
||||
137 => 1000,
|
||||
191 => 611,
|
||||
96 => 333,
|
||||
180 => 333,
|
||||
136 => 333,
|
||||
152 => 333,
|
||||
175 => 333,
|
||||
'breve' => 333,
|
||||
'dotaccent' => 333,
|
||||
168 => 333,
|
||||
'ring' => 333,
|
||||
184 => 333,
|
||||
'hungarumlaut' => 333,
|
||||
'ogonek' => 333,
|
||||
'caron' => 333,
|
||||
151 => 1000,
|
||||
198 => 1000,
|
||||
'Lslash' => 556,
|
||||
216 => 778,
|
||||
140 => 1000,
|
||||
186 => 365,
|
||||
230 => 889,
|
||||
'dotlessi' => 278,
|
||||
'lslash' => 222,
|
||||
248 => 611,
|
||||
156 => 944,
|
||||
223 => 611,
|
||||
207 => 278,
|
||||
233 => 556,
|
||||
'abreve' => 556,
|
||||
'uhungarumlaut' => 556,
|
||||
'ecaron' => 556,
|
||||
159 => 667,
|
||||
247 => 584,
|
||||
221 => 667,
|
||||
194 => 667,
|
||||
225 => 556,
|
||||
219 => 722,
|
||||
253 => 500,
|
||||
'scommaaccent' => 500,
|
||||
234 => 556,
|
||||
'Uring' => 722,
|
||||
220 => 722,
|
||||
'aogonek' => 556,
|
||||
218 => 722,
|
||||
'uogonek' => 556,
|
||||
203 => 667,
|
||||
'Dcroat' => 722,
|
||||
'commaaccent' => 250,
|
||||
169 => 737,
|
||||
'Emacron' => 667,
|
||||
'ccaron' => 500,
|
||||
229 => 556,
|
||||
'Ncommaaccent' => 722,
|
||||
'lacute' => 222,
|
||||
224 => 556,
|
||||
'Tcommaaccent' => 611,
|
||||
'Cacute' => 722,
|
||||
227 => 556,
|
||||
'Edotaccent' => 667,
|
||||
154 => 500,
|
||||
'scedilla' => 500,
|
||||
237 => 278,
|
||||
'lozenge' => 471,
|
||||
'Rcaron' => 722,
|
||||
'Gcommaaccent' => 778,
|
||||
251 => 556,
|
||||
226 => 556,
|
||||
'Amacron' => 667,
|
||||
'rcaron' => 333,
|
||||
231 => 500,
|
||||
'Zdotaccent' => 611,
|
||||
222 => 667,
|
||||
'Omacron' => 778,
|
||||
'Racute' => 722,
|
||||
'Sacute' => 667,
|
||||
'dcaron' => 643,
|
||||
'Umacron' => 722,
|
||||
'uring' => 556,
|
||||
179 => 333,
|
||||
210 => 778,
|
||||
192 => 667,
|
||||
'Abreve' => 667,
|
||||
215 => 584,
|
||||
250 => 556,
|
||||
'Tcaron' => 611,
|
||||
'partialdiff' => 476,
|
||||
255 => 500,
|
||||
'Nacute' => 722,
|
||||
238 => 278,
|
||||
202 => 667,
|
||||
228 => 556,
|
||||
235 => 556,
|
||||
'cacute' => 500,
|
||||
'nacute' => 556,
|
||||
'umacron' => 556,
|
||||
'Ncaron' => 722,
|
||||
205 => 278,
|
||||
177 => 584,
|
||||
166 => 260,
|
||||
174 => 737,
|
||||
'Gbreve' => 778,
|
||||
'Idotaccent' => 278,
|
||||
'summation' => 600,
|
||||
200 => 667,
|
||||
'racute' => 333,
|
||||
'omacron' => 556,
|
||||
'Zacute' => 611,
|
||||
142 => 611,
|
||||
'greaterequal' => 549,
|
||||
208 => 722,
|
||||
199 => 722,
|
||||
'lcommaaccent' => 222,
|
||||
'tcaron' => 317,
|
||||
'eogonek' => 556,
|
||||
'Uogonek' => 722,
|
||||
193 => 667,
|
||||
196 => 667,
|
||||
232 => 556,
|
||||
'zacute' => 500,
|
||||
'iogonek' => 222,
|
||||
211 => 778,
|
||||
243 => 556,
|
||||
'amacron' => 556,
|
||||
'sacute' => 500,
|
||||
239 => 278,
|
||||
212 => 778,
|
||||
217 => 722,
|
||||
'Delta' => 612,
|
||||
254 => 556,
|
||||
178 => 333,
|
||||
214 => 778,
|
||||
181 => 556,
|
||||
236 => 278,
|
||||
'ohungarumlaut' => 556,
|
||||
'Eogonek' => 667,
|
||||
'dcroat' => 556,
|
||||
190 => 834,
|
||||
'Scedilla' => 667,
|
||||
'lcaron' => 299,
|
||||
'Kcommaaccent' => 667,
|
||||
'Lacute' => 556,
|
||||
153 => 1000,
|
||||
'edotaccent' => 556,
|
||||
204 => 278,
|
||||
'Imacron' => 278,
|
||||
'Lcaron' => 556,
|
||||
189 => 834,
|
||||
'lessequal' => 549,
|
||||
244 => 556,
|
||||
241 => 556,
|
||||
'Uhungarumlaut' => 722,
|
||||
201 => 667,
|
||||
'emacron' => 556,
|
||||
'gbreve' => 556,
|
||||
188 => 834,
|
||||
138 => 667,
|
||||
'Scommaaccent' => 667,
|
||||
'Ohungarumlaut' => 778,
|
||||
176 => 400,
|
||||
242 => 556,
|
||||
'Ccaron' => 722,
|
||||
249 => 556,
|
||||
'radical' => 453,
|
||||
'Dcaron' => 722,
|
||||
'rcommaaccent' => 333,
|
||||
209 => 722,
|
||||
245 => 556,
|
||||
'Rcommaaccent' => 722,
|
||||
'Lcommaaccent' => 556,
|
||||
195 => 667,
|
||||
'Aogonek' => 667,
|
||||
197 => 667,
|
||||
213 => 778,
|
||||
'zdotaccent' => 500,
|
||||
'Ecaron' => 667,
|
||||
'Iogonek' => 278,
|
||||
'kcommaaccent' => 500,
|
||||
'minus' => 584,
|
||||
206 => 278,
|
||||
'ncaron' => 556,
|
||||
'tcommaaccent' => 278,
|
||||
172 => 584,
|
||||
246 => 556,
|
||||
252 => 556,
|
||||
'notequal' => 549,
|
||||
'gcommaaccent' => 556,
|
||||
240 => 556,
|
||||
158 => 500,
|
||||
'ncommaaccent' => 556,
|
||||
185 => 333,
|
||||
'imacron' => 278,
|
||||
128 => 556,
|
||||
),
|
||||
'CIDtoGID_Compressed' => true,
|
||||
'CIDtoGID' => 'eJwDAAAAAAE=',
|
||||
'_version_' => 5,
|
||||
);
|
|
@ -1,570 +0,0 @@
|
|||
<?php return array (
|
||||
'codeToName' =>
|
||||
array (
|
||||
32 => 'space',
|
||||
160 => 'space',
|
||||
33 => 'exclam',
|
||||
34 => 'quotedbl',
|
||||
35 => 'numbersign',
|
||||
36 => 'dollar',
|
||||
37 => 'percent',
|
||||
38 => 'ampersand',
|
||||
146 => 'quoteright',
|
||||
40 => 'parenleft',
|
||||
41 => 'parenright',
|
||||
42 => 'asterisk',
|
||||
43 => 'plus',
|
||||
44 => 'comma',
|
||||
45 => 'hyphen',
|
||||
173 => 'hyphen',
|
||||
46 => 'period',
|
||||
47 => 'slash',
|
||||
48 => 'zero',
|
||||
49 => 'one',
|
||||
50 => 'two',
|
||||
51 => 'three',
|
||||
52 => 'four',
|
||||
53 => 'five',
|
||||
54 => 'six',
|
||||
55 => 'seven',
|
||||
56 => 'eight',
|
||||
57 => 'nine',
|
||||
58 => 'colon',
|
||||
59 => 'semicolon',
|
||||
60 => 'less',
|
||||
61 => 'equal',
|
||||
62 => 'greater',
|
||||
63 => 'question',
|
||||
64 => 'at',
|
||||
65 => 'A',
|
||||
66 => 'B',
|
||||
67 => 'C',
|
||||
68 => 'D',
|
||||
69 => 'E',
|
||||
70 => 'F',
|
||||
71 => 'G',
|
||||
72 => 'H',
|
||||
73 => 'I',
|
||||
74 => 'J',
|
||||
75 => 'K',
|
||||
76 => 'L',
|
||||
77 => 'M',
|
||||
78 => 'N',
|
||||
79 => 'O',
|
||||
80 => 'P',
|
||||
81 => 'Q',
|
||||
82 => 'R',
|
||||
83 => 'S',
|
||||
84 => 'T',
|
||||
85 => 'U',
|
||||
86 => 'V',
|
||||
87 => 'W',
|
||||
88 => 'X',
|
||||
89 => 'Y',
|
||||
90 => 'Z',
|
||||
91 => 'bracketleft',
|
||||
92 => 'backslash',
|
||||
93 => 'bracketright',
|
||||
94 => 'asciicircum',
|
||||
95 => 'underscore',
|
||||
145 => 'quoteleft',
|
||||
97 => 'a',
|
||||
98 => 'b',
|
||||
99 => 'c',
|
||||
100 => 'd',
|
||||
101 => 'e',
|
||||
102 => 'f',
|
||||
103 => 'g',
|
||||
104 => 'h',
|
||||
105 => 'i',
|
||||
106 => 'j',
|
||||
107 => 'k',
|
||||
108 => 'l',
|
||||
109 => 'm',
|
||||
110 => 'n',
|
||||
111 => 'o',
|
||||
112 => 'p',
|
||||
113 => 'q',
|
||||
114 => 'r',
|
||||
115 => 's',
|
||||
116 => 't',
|
||||
117 => 'u',
|
||||
118 => 'v',
|
||||
119 => 'w',
|
||||
120 => 'x',
|
||||
121 => 'y',
|
||||
122 => 'z',
|
||||
123 => 'braceleft',
|
||||
124 => 'bar',
|
||||
125 => 'braceright',
|
||||
126 => 'asciitilde',
|
||||
161 => 'exclamdown',
|
||||
162 => 'cent',
|
||||
163 => 'sterling',
|
||||
165 => 'yen',
|
||||
131 => 'florin',
|
||||
167 => 'section',
|
||||
164 => 'currency',
|
||||
39 => 'quotesingle',
|
||||
147 => 'quotedblleft',
|
||||
170 => 'ordfeminine',
|
||||
139 => 'guilsinglleft',
|
||||
155 => 'guilsinglright',
|
||||
150 => 'endash',
|
||||
134 => 'dagger',
|
||||
135 => 'daggerdbl',
|
||||
183 => 'periodcentered',
|
||||
182 => 'paragraph',
|
||||
149 => 'bullet',
|
||||
130 => 'quotesinglbase',
|
||||
132 => 'quotedblbase',
|
||||
148 => 'quotedblright',
|
||||
187 => 'guillemotright',
|
||||
133 => 'ellipsis',
|
||||
137 => 'perthousand',
|
||||
191 => 'questiondown',
|
||||
96 => 'grave',
|
||||
180 => 'acute',
|
||||
136 => 'circumflex',
|
||||
152 => 'tilde',
|
||||
175 => 'macron',
|
||||
168 => 'dieresis',
|
||||
184 => 'cedilla',
|
||||
151 => 'emdash',
|
||||
198 => 'AE',
|
||||
216 => 'Oslash',
|
||||
140 => 'OE',
|
||||
186 => 'ordmasculine',
|
||||
230 => 'ae',
|
||||
248 => 'oslash',
|
||||
156 => 'oe',
|
||||
223 => 'germandbls',
|
||||
207 => 'Idieresis',
|
||||
233 => 'eacute',
|
||||
159 => 'Ydieresis',
|
||||
247 => 'divide',
|
||||
221 => 'Yacute',
|
||||
194 => 'Acircumflex',
|
||||
225 => 'aacute',
|
||||
219 => 'Ucircumflex',
|
||||
253 => 'yacute',
|
||||
234 => 'ecircumflex',
|
||||
220 => 'Udieresis',
|
||||
218 => 'Uacute',
|
||||
203 => 'Edieresis',
|
||||
169 => 'copyright',
|
||||
229 => 'aring',
|
||||
224 => 'agrave',
|
||||
227 => 'atilde',
|
||||
154 => 'scaron',
|
||||
237 => 'iacute',
|
||||
251 => 'ucircumflex',
|
||||
226 => 'acircumflex',
|
||||
231 => 'ccedilla',
|
||||
222 => 'Thorn',
|
||||
179 => 'threesuperior',
|
||||
210 => 'Ograve',
|
||||
192 => 'Agrave',
|
||||
215 => 'multiply',
|
||||
250 => 'uacute',
|
||||
255 => 'ydieresis',
|
||||
238 => 'icircumflex',
|
||||
202 => 'Ecircumflex',
|
||||
228 => 'adieresis',
|
||||
235 => 'edieresis',
|
||||
205 => 'Iacute',
|
||||
177 => 'plusminus',
|
||||
166 => 'brokenbar',
|
||||
174 => 'registered',
|
||||
200 => 'Egrave',
|
||||
142 => 'Zcaron',
|
||||
208 => 'Eth',
|
||||
199 => 'Ccedilla',
|
||||
193 => 'Aacute',
|
||||
196 => 'Adieresis',
|
||||
232 => 'egrave',
|
||||
211 => 'Oacute',
|
||||
243 => 'oacute',
|
||||
239 => 'idieresis',
|
||||
212 => 'Ocircumflex',
|
||||
217 => 'Ugrave',
|
||||
254 => 'thorn',
|
||||
178 => 'twosuperior',
|
||||
214 => 'Odieresis',
|
||||
181 => 'mu',
|
||||
236 => 'igrave',
|
||||
190 => 'threequarters',
|
||||
153 => 'trademark',
|
||||
204 => 'Igrave',
|
||||
189 => 'onehalf',
|
||||
244 => 'ocircumflex',
|
||||
241 => 'ntilde',
|
||||
201 => 'Eacute',
|
||||
188 => 'onequarter',
|
||||
138 => 'Scaron',
|
||||
176 => 'degree',
|
||||
242 => 'ograve',
|
||||
249 => 'ugrave',
|
||||
209 => 'Ntilde',
|
||||
245 => 'otilde',
|
||||
195 => 'Atilde',
|
||||
197 => 'Aring',
|
||||
213 => 'Otilde',
|
||||
206 => 'Icircumflex',
|
||||
172 => 'logicalnot',
|
||||
246 => 'odieresis',
|
||||
252 => 'udieresis',
|
||||
240 => 'eth',
|
||||
158 => 'zcaron',
|
||||
185 => 'onesuperior',
|
||||
128 => 'Euro',
|
||||
),
|
||||
'isUnicode' => false,
|
||||
'FontName' => 'Times-Roman',
|
||||
'FullName' => 'Times Roman',
|
||||
'FamilyName' => 'Times',
|
||||
'Weight' => 'Roman',
|
||||
'ItalicAngle' => '0',
|
||||
'IsFixedPitch' => 'false',
|
||||
'CharacterSet' => 'ExtendedRoman',
|
||||
'FontBBox' =>
|
||||
array (
|
||||
0 => '-168',
|
||||
1 => '-218',
|
||||
2 => '1000',
|
||||
3 => '898',
|
||||
),
|
||||
'UnderlinePosition' => '-100',
|
||||
'UnderlineThickness' => '50',
|
||||
'Version' => '002.00',
|
||||
'EncodingScheme' => 'WinAnsiEncoding',
|
||||
'CapHeight' => '662',
|
||||
'XHeight' => '450',
|
||||
'Ascender' => '683',
|
||||
'Descender' => '-217',
|
||||
'StdHW' => '28',
|
||||
'StdVW' => '84',
|
||||
'StartCharMetrics' => '317',
|
||||
'C' =>
|
||||
array (
|
||||
32 => 250,
|
||||
160 => 250,
|
||||
33 => 333,
|
||||
34 => 408,
|
||||
35 => 500,
|
||||
36 => 500,
|
||||
37 => 833,
|
||||
38 => 778,
|
||||
146 => 333,
|
||||
40 => 333,
|
||||
41 => 333,
|
||||
42 => 500,
|
||||
43 => 564,
|
||||
44 => 250,
|
||||
45 => 333,
|
||||
173 => 333,
|
||||
46 => 250,
|
||||
47 => 278,
|
||||
48 => 500,
|
||||
49 => 500,
|
||||
50 => 500,
|
||||
51 => 500,
|
||||
52 => 500,
|
||||
53 => 500,
|
||||
54 => 500,
|
||||
55 => 500,
|
||||
56 => 500,
|
||||
57 => 500,
|
||||
58 => 278,
|
||||
59 => 278,
|
||||
60 => 564,
|
||||
61 => 564,
|
||||
62 => 564,
|
||||
63 => 444,
|
||||
64 => 921,
|
||||
65 => 722,
|
||||
66 => 667,
|
||||
67 => 667,
|
||||
68 => 722,
|
||||
69 => 611,
|
||||
70 => 556,
|
||||
71 => 722,
|
||||
72 => 722,
|
||||
73 => 333,
|
||||
74 => 389,
|
||||
75 => 722,
|
||||
76 => 611,
|
||||
77 => 889,
|
||||
78 => 722,
|
||||
79 => 722,
|
||||
80 => 556,
|
||||
81 => 722,
|
||||
82 => 667,
|
||||
83 => 556,
|
||||
84 => 611,
|
||||
85 => 722,
|
||||
86 => 722,
|
||||
87 => 944,
|
||||
88 => 722,
|
||||
89 => 722,
|
||||
90 => 611,
|
||||
91 => 333,
|
||||
92 => 278,
|
||||
93 => 333,
|
||||
94 => 469,
|
||||
95 => 500,
|
||||
145 => 333,
|
||||
97 => 444,
|
||||
98 => 500,
|
||||
99 => 444,
|
||||
100 => 500,
|
||||
101 => 444,
|
||||
102 => 333,
|
||||
103 => 500,
|
||||
104 => 500,
|
||||
105 => 278,
|
||||
106 => 278,
|
||||
107 => 500,
|
||||
108 => 278,
|
||||
109 => 778,
|
||||
110 => 500,
|
||||
111 => 500,
|
||||
112 => 500,
|
||||
113 => 500,
|
||||
114 => 333,
|
||||
115 => 389,
|
||||
116 => 278,
|
||||
117 => 500,
|
||||
118 => 500,
|
||||
119 => 722,
|
||||
120 => 500,
|
||||
121 => 500,
|
||||
122 => 444,
|
||||
123 => 480,
|
||||
124 => 200,
|
||||
125 => 480,
|
||||
126 => 541,
|
||||
161 => 333,
|
||||
162 => 500,
|
||||
163 => 500,
|
||||
'fraction' => 167,
|
||||
165 => 500,
|
||||
131 => 500,
|
||||
167 => 500,
|
||||
164 => 500,
|
||||
39 => 180,
|
||||
147 => 444,
|
||||
170 => 276,
|
||||
139 => 333,
|
||||
155 => 333,
|
||||
'fi' => 556,
|
||||
'fl' => 556,
|
||||
150 => 500,
|
||||
134 => 500,
|
||||
135 => 500,
|
||||
183 => 250,
|
||||
182 => 453,
|
||||
149 => 350,
|
||||
130 => 333,
|
||||
132 => 444,
|
||||
148 => 444,
|
||||
187 => 500,
|
||||
133 => 1000,
|
||||
137 => 1000,
|
||||
191 => 444,
|
||||
96 => 333,
|
||||
180 => 333,
|
||||
136 => 333,
|
||||
152 => 333,
|
||||
175 => 333,
|
||||
'breve' => 333,
|
||||
'dotaccent' => 333,
|
||||
168 => 333,
|
||||
'ring' => 333,
|
||||
184 => 333,
|
||||
'hungarumlaut' => 333,
|
||||
'ogonek' => 333,
|
||||
'caron' => 333,
|
||||
151 => 1000,
|
||||
198 => 889,
|
||||
'Lslash' => 611,
|
||||
216 => 722,
|
||||
140 => 889,
|
||||
186 => 310,
|
||||
230 => 667,
|
||||
'dotlessi' => 278,
|
||||
'lslash' => 278,
|
||||
248 => 500,
|
||||
156 => 722,
|
||||
223 => 500,
|
||||
207 => 333,
|
||||
233 => 444,
|
||||
'abreve' => 444,
|
||||
'uhungarumlaut' => 500,
|
||||
'ecaron' => 444,
|
||||
159 => 722,
|
||||
247 => 564,
|
||||
221 => 722,
|
||||
194 => 722,
|
||||
225 => 444,
|
||||
219 => 722,
|
||||
253 => 500,
|
||||
'scommaaccent' => 389,
|
||||
234 => 444,
|
||||
'Uring' => 722,
|
||||
220 => 722,
|
||||
'aogonek' => 444,
|
||||
218 => 722,
|
||||
'uogonek' => 500,
|
||||
203 => 611,
|
||||
'Dcroat' => 722,
|
||||
'commaaccent' => 250,
|
||||
169 => 760,
|
||||
'Emacron' => 611,
|
||||
'ccaron' => 444,
|
||||
229 => 444,
|
||||
'Ncommaaccent' => 722,
|
||||
'lacute' => 278,
|
||||
224 => 444,
|
||||
'Tcommaaccent' => 611,
|
||||
'Cacute' => 667,
|
||||
227 => 444,
|
||||
'Edotaccent' => 611,
|
||||
154 => 389,
|
||||
'scedilla' => 389,
|
||||
237 => 278,
|
||||
'lozenge' => 471,
|
||||
'Rcaron' => 667,
|
||||
'Gcommaaccent' => 722,
|
||||
251 => 500,
|
||||
226 => 444,
|
||||
'Amacron' => 722,
|
||||
'rcaron' => 333,
|
||||
231 => 444,
|
||||
'Zdotaccent' => 611,
|
||||
222 => 556,
|
||||
'Omacron' => 722,
|
||||
'Racute' => 667,
|
||||
'Sacute' => 556,
|
||||
'dcaron' => 588,
|
||||
'Umacron' => 722,
|
||||
'uring' => 500,
|
||||
179 => 300,
|
||||
210 => 722,
|
||||
192 => 722,
|
||||
'Abreve' => 722,
|
||||
215 => 564,
|
||||
250 => 500,
|
||||
'Tcaron' => 611,
|
||||
'partialdiff' => 476,
|
||||
255 => 500,
|
||||
'Nacute' => 722,
|
||||
238 => 278,
|
||||
202 => 611,
|
||||
228 => 444,
|
||||
235 => 444,
|
||||
'cacute' => 444,
|
||||
'nacute' => 500,
|
||||
'umacron' => 500,
|
||||
'Ncaron' => 722,
|
||||
205 => 333,
|
||||
177 => 564,
|
||||
166 => 200,
|
||||
174 => 760,
|
||||
'Gbreve' => 722,
|
||||
'Idotaccent' => 333,
|
||||
'summation' => 600,
|
||||
200 => 611,
|
||||
'racute' => 333,
|
||||
'omacron' => 500,
|
||||
'Zacute' => 611,
|
||||
142 => 611,
|
||||
'greaterequal' => 549,
|
||||
208 => 722,
|
||||
199 => 667,
|
||||
'lcommaaccent' => 278,
|
||||
'tcaron' => 326,
|
||||
'eogonek' => 444,
|
||||
'Uogonek' => 722,
|
||||
193 => 722,
|
||||
196 => 722,
|
||||
232 => 444,
|
||||
'zacute' => 444,
|
||||
'iogonek' => 278,
|
||||
211 => 722,
|
||||
243 => 500,
|
||||
'amacron' => 444,
|
||||
'sacute' => 389,
|
||||
239 => 278,
|
||||
212 => 722,
|
||||
217 => 722,
|
||||
'Delta' => 612,
|
||||
254 => 500,
|
||||
178 => 300,
|
||||
214 => 722,
|
||||
181 => 500,
|
||||
236 => 278,
|
||||
'ohungarumlaut' => 500,
|
||||
'Eogonek' => 611,
|
||||
'dcroat' => 500,
|
||||
190 => 750,
|
||||
'Scedilla' => 556,
|
||||
'lcaron' => 344,
|
||||
'Kcommaaccent' => 722,
|
||||
'Lacute' => 611,
|
||||
153 => 980,
|
||||
'edotaccent' => 444,
|
||||
204 => 333,
|
||||
'Imacron' => 333,
|
||||
'Lcaron' => 611,
|
||||
189 => 750,
|
||||
'lessequal' => 549,
|
||||
244 => 500,
|
||||
241 => 500,
|
||||
'Uhungarumlaut' => 722,
|
||||
201 => 611,
|
||||
'emacron' => 444,
|
||||
'gbreve' => 500,
|
||||
188 => 750,
|
||||
138 => 556,
|
||||
'Scommaaccent' => 556,
|
||||
'Ohungarumlaut' => 722,
|
||||
176 => 400,
|
||||
242 => 500,
|
||||
'Ccaron' => 667,
|
||||
249 => 500,
|
||||
'radical' => 453,
|
||||
'Dcaron' => 722,
|
||||
'rcommaaccent' => 333,
|
||||
209 => 722,
|
||||
245 => 500,
|
||||
'Rcommaaccent' => 667,
|
||||
'Lcommaaccent' => 611,
|
||||
195 => 722,
|
||||
'Aogonek' => 722,
|
||||
197 => 722,
|
||||
213 => 722,
|
||||
'zdotaccent' => 444,
|
||||
'Ecaron' => 611,
|
||||
'Iogonek' => 333,
|
||||
'kcommaaccent' => 500,
|
||||
'minus' => 564,
|
||||
206 => 333,
|
||||
'ncaron' => 500,
|
||||
'tcommaaccent' => 278,
|
||||
172 => 564,
|
||||
246 => 500,
|
||||
252 => 500,
|
||||
'notequal' => 549,
|
||||
'gcommaaccent' => 500,
|
||||
240 => 500,
|
||||
158 => 444,
|
||||
'ncommaaccent' => 500,
|
||||
185 => 300,
|
||||
'imacron' => 278,
|
||||
128 => 500,
|
||||
),
|
||||
'CIDtoGID_Compressed' => true,
|
||||
'CIDtoGID' => 'eJwDAAAAAAE=',
|
||||
'_version_' => 5,
|
||||
);
|
|
@ -1,111 +0,0 @@
|
|||
<?php return array (
|
||||
'sans-serif' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'Helvetica',
|
||||
'bold' => DOMPDF_FONT_DIR . 'Helvetica-Bold',
|
||||
'italic' => DOMPDF_FONT_DIR . 'Helvetica-Oblique',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique',
|
||||
),
|
||||
'times' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'Times-Roman',
|
||||
'bold' => DOMPDF_FONT_DIR . 'Times-Bold',
|
||||
'italic' => DOMPDF_FONT_DIR . 'Times-Italic',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic',
|
||||
),
|
||||
'times-roman' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'Times-Roman',
|
||||
'bold' => DOMPDF_FONT_DIR . 'Times-Bold',
|
||||
'italic' => DOMPDF_FONT_DIR . 'Times-Italic',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic',
|
||||
),
|
||||
'courier' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'Courier',
|
||||
'bold' => DOMPDF_FONT_DIR . 'Courier-Bold',
|
||||
'italic' => DOMPDF_FONT_DIR . 'Courier-Oblique',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
|
||||
),
|
||||
'helvetica' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'Helvetica',
|
||||
'bold' => DOMPDF_FONT_DIR . 'Helvetica-Bold',
|
||||
'italic' => DOMPDF_FONT_DIR . 'Helvetica-Oblique',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'Helvetica-BoldOblique',
|
||||
),
|
||||
'zapfdingbats' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'ZapfDingbats',
|
||||
'bold' => DOMPDF_FONT_DIR . 'ZapfDingbats',
|
||||
'italic' => DOMPDF_FONT_DIR . 'ZapfDingbats',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'ZapfDingbats',
|
||||
),
|
||||
'symbol' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'Symbol',
|
||||
'bold' => DOMPDF_FONT_DIR . 'Symbol',
|
||||
'italic' => DOMPDF_FONT_DIR . 'Symbol',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'Symbol',
|
||||
),
|
||||
'serif' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'Times-Roman',
|
||||
'bold' => DOMPDF_FONT_DIR . 'Times-Bold',
|
||||
'italic' => DOMPDF_FONT_DIR . 'Times-Italic',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'Times-BoldItalic',
|
||||
),
|
||||
'monospace' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'Courier',
|
||||
'bold' => DOMPDF_FONT_DIR . 'Courier-Bold',
|
||||
'italic' => DOMPDF_FONT_DIR . 'Courier-Oblique',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
|
||||
),
|
||||
'fixed' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'Courier',
|
||||
'bold' => DOMPDF_FONT_DIR . 'Courier-Bold',
|
||||
'italic' => DOMPDF_FONT_DIR . 'Courier-Oblique',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'Courier-BoldOblique',
|
||||
),
|
||||
'dejavu sans' =>
|
||||
array (
|
||||
'bold' => DOMPDF_FONT_DIR . 'DejaVuSans-Bold',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'DejaVuSans-BoldOblique',
|
||||
'italic' => DOMPDF_FONT_DIR . 'DejaVuSans-Oblique',
|
||||
'normal' => DOMPDF_FONT_DIR . 'DejaVuSans',
|
||||
),
|
||||
'dejavu sans light' =>
|
||||
array (
|
||||
'normal' => DOMPDF_FONT_DIR . 'DejaVuSans-ExtraLight',
|
||||
),
|
||||
'dejavu sans condensed' =>
|
||||
array (
|
||||
'bold' => DOMPDF_FONT_DIR . 'DejaVuSansCondensed-Bold',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'DejaVuSansCondensed-BoldOblique',
|
||||
'italic' => DOMPDF_FONT_DIR . 'DejaVuSansCondensed-Oblique',
|
||||
'normal' => DOMPDF_FONT_DIR . 'DejaVuSansCondensed',
|
||||
),
|
||||
'dejavu sans mono' =>
|
||||
array (
|
||||
'bold' => DOMPDF_FONT_DIR . 'DejaVuSansMono-Bold',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'DejaVuSansMono-BoldOblique',
|
||||
'italic' => DOMPDF_FONT_DIR . 'DejaVuSansMono-Oblique',
|
||||
'normal' => DOMPDF_FONT_DIR . 'DejaVuSansMono',
|
||||
),
|
||||
'dejavu serif' =>
|
||||
array (
|
||||
'bold' => DOMPDF_FONT_DIR . 'DejaVuSerif-Bold',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'DejaVuSerif-BoldItalic',
|
||||
'italic' => DOMPDF_FONT_DIR . 'DejaVuSerif-Italic',
|
||||
'normal' => DOMPDF_FONT_DIR . 'DejaVuSerif',
|
||||
),
|
||||
'dejavu serif condensed' =>
|
||||
array (
|
||||
'bold' => DOMPDF_FONT_DIR . 'DejaVuSerifCondensed-Bold',
|
||||
'bold_italic' => DOMPDF_FONT_DIR . 'DejaVuSerifCondensed-BoldItalic',
|
||||
'italic' => DOMPDF_FONT_DIR . 'DejaVuSerifCondensed-Italic',
|
||||
'normal' => DOMPDF_FONT_DIR . 'DejaVuSerifCondensed',
|
||||
),
|
||||
) ?>
|
|
@ -1,208 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: adobe_font_metrics.cls.php 35 2011-11-02 22:30:45Z fabien.menager $
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__)."/encoding_map.cls.php";
|
||||
|
||||
/**
|
||||
* Adobe Font Metrics file creation utility class.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Adobe_Font_Metrics {
|
||||
private $f;
|
||||
|
||||
/**
|
||||
* @var Font_TrueType
|
||||
*/
|
||||
private $font;
|
||||
|
||||
function __construct(Font_TrueType $font) {
|
||||
$this->font = $font;
|
||||
}
|
||||
|
||||
function write($file, $encoding = null){
|
||||
if ($encoding) {
|
||||
$encoding = preg_replace("/[^a-z0-9-_]/", "", $encoding);
|
||||
$map_file = dirname(__FILE__)."/../maps/$encoding.map";
|
||||
if (!file_exists($map_file)) {
|
||||
throw new Exception("Unkown encoding ($encoding)");
|
||||
}
|
||||
|
||||
$map = new Encoding_Map($map_file);
|
||||
$map_data = $map->parse();
|
||||
}
|
||||
|
||||
$this->f = fopen($file, "w+");
|
||||
|
||||
$font = $this->font;
|
||||
|
||||
$this->startSection("FontMetrics", 4.1);
|
||||
$this->addPair("Notice", "Converted by PHP-font-lib");
|
||||
$this->addPair("Comment", "http://php-font-lib.googlecode.com/");
|
||||
|
||||
$encoding_scheme = ($encoding ? $encoding : "FontSpecific");
|
||||
$this->addPair("EncodingScheme", $encoding_scheme);
|
||||
|
||||
$records = $font->getData("name", "records");
|
||||
foreach($records as $id => $record) {
|
||||
if (!isset(Font_TrueType::$nameIdCodes[$id]) || preg_match("/[\r\n]/", $record->string)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->addPair(Font_TrueType::$nameIdCodes[$id], $record->string);
|
||||
}
|
||||
|
||||
$os2 = $font->getData("OS/2");
|
||||
$this->addPair("Weight", ($os2["usWeightClass"] > 400 ? "Bold" : "Medium"));
|
||||
|
||||
$post = $font->getData("post");
|
||||
$this->addPair("ItalicAngle", $post["italicAngle"]);
|
||||
$this->addPair("IsFixedPitch", ($post["isFixedPitch"] ? "true" : "false"));
|
||||
$this->addPair("UnderlineThickness", $font->normalizeFUnit($post["underlineThickness"]));
|
||||
$this->addPair("UnderlinePosition", $font->normalizeFUnit($post["underlinePosition"]));
|
||||
|
||||
$hhea = $font->getData("hhea");
|
||||
|
||||
if (isset($os2["typoAscender"])) {
|
||||
$this->addPair("FontHeightOffset", $font->normalizeFUnit($os2["typoLineGap"]));
|
||||
$this->addPair("Ascender", $font->normalizeFUnit($os2["typoAscender"]));
|
||||
$this->addPair("Descender", $font->normalizeFUnit($os2["typoDescender"]));
|
||||
}
|
||||
else {
|
||||
$this->addPair("FontHeightOffset", $font->normalizeFUnit($hhea["lineGap"]));
|
||||
$this->addPair("Ascender", $font->normalizeFUnit($hhea["ascent"]));
|
||||
$this->addPair("Descender", $font->normalizeFUnit($hhea["descent"]));
|
||||
}
|
||||
|
||||
$head = $font->getData("head");
|
||||
$this->addArray("FontBBox", array(
|
||||
$font->normalizeFUnit($head["xMin"]),
|
||||
$font->normalizeFUnit($head["yMin"]),
|
||||
$font->normalizeFUnit($head["xMax"]),
|
||||
$font->normalizeFUnit($head["yMax"]),
|
||||
));
|
||||
|
||||
$subtable = null;
|
||||
foreach($font->getData("cmap", "subtables") as $_subtable) {
|
||||
if ($_subtable["platformID"] == 0 || $_subtable["platformID"] == 3 && $_subtable["platformSpecificID"] == 1) {
|
||||
$subtable = $_subtable;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($subtable) {
|
||||
$hmtx = $font->getData("hmtx");
|
||||
$names = $font->getData("post", "names");
|
||||
$glyphIndexArray = $subtable["glyphIndexArray"];
|
||||
|
||||
$this->startSection("CharMetrics", count($hmtx));
|
||||
|
||||
if ($encoding) {
|
||||
foreach($map_data as $code => $value) {
|
||||
list($c, $name) = $value;
|
||||
|
||||
if (!isset($glyphIndexArray[$c])) continue;
|
||||
|
||||
$g = $glyphIndexArray[$c];
|
||||
|
||||
if (!isset($hmtx[$g])) {
|
||||
$hmtx[$g] = $hmtx[0];
|
||||
}
|
||||
|
||||
$this->addMetric(array(
|
||||
"C" => ($code > 255 ? -1 : $code),
|
||||
"WX" => $font->normalizeFUnit($hmtx[$g][0]),
|
||||
"N" => $name,
|
||||
));
|
||||
}
|
||||
}
|
||||
else {
|
||||
foreach($glyphIndexArray as $c => $g) {
|
||||
if (!isset($hmtx[$g])) {
|
||||
$hmtx[$g] = $hmtx[0];
|
||||
}
|
||||
|
||||
$this->addMetric(array(
|
||||
"U" => $c,
|
||||
"WX" => $font->normalizeFUnit($hmtx[$g][0]),
|
||||
"N" => (isset($names[$g]) ? $names[$g] : sprintf("uni%04x", $c)),
|
||||
"G" => $g,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
$this->endSection("CharMetrics");
|
||||
|
||||
$kern = $font->getData("kern", "subtable");
|
||||
$tree = $kern["tree"];
|
||||
|
||||
if (!$encoding && is_array($tree)) {
|
||||
$this->startSection("KernData");
|
||||
$this->startSection("KernPairs", count($tree, COUNT_RECURSIVE) - count($tree));
|
||||
|
||||
foreach($tree as $left => $values) {
|
||||
if (!is_array($values)) continue;
|
||||
if (!isset($glyphIndexArray[$left])) continue;
|
||||
|
||||
$left_gid = $glyphIndexArray[$left];
|
||||
|
||||
if (!isset($names[$left_gid])) continue;
|
||||
|
||||
$left_name = $names[$left_gid];
|
||||
|
||||
$this->addLine("");
|
||||
|
||||
foreach($values as $right => $value) {
|
||||
if (!isset($glyphIndexArray[$right])) continue;
|
||||
|
||||
$right_gid = $glyphIndexArray[$right];
|
||||
|
||||
if (!isset($names[$right_gid])) continue;
|
||||
|
||||
$right_name = $names[$right_gid];
|
||||
$this->addPair("KPX", "$left_name $right_name $value");
|
||||
}
|
||||
}
|
||||
|
||||
$this->endSection("KernPairs");
|
||||
$this->endSection("KernData");
|
||||
}
|
||||
}
|
||||
|
||||
$this->endSection("FontMetrics");
|
||||
}
|
||||
|
||||
function addLine($line) {
|
||||
fwrite($this->f, "$line\n");
|
||||
}
|
||||
|
||||
function addPair($key, $value) {
|
||||
$this->addLine("$key $value");
|
||||
}
|
||||
|
||||
function addArray($key, $array) {
|
||||
$this->addLine("$key ".implode(" ", $array));
|
||||
}
|
||||
|
||||
function addMetric($data) {
|
||||
$array = array();
|
||||
foreach($data as $key => $value) {
|
||||
$array[] = "$key $value";
|
||||
}
|
||||
$this->addLine(implode(" ; ", $array));
|
||||
}
|
||||
|
||||
function startSection($name, $value = "") {
|
||||
$this->addLine("Start$name $value");
|
||||
}
|
||||
|
||||
function endSection($name) {
|
||||
$this->addLine("End$name");
|
||||
}
|
||||
}
|
|
@ -1,68 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_eot.cls.php 34 2011-10-23 13:53:25Z fabien.menager $
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__)."/font_truetype.cls.php";
|
||||
|
||||
/**
|
||||
* EOT font file.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_EOT extends Font_TrueType {
|
||||
private $origF;
|
||||
private $fileOffset = 0;
|
||||
|
||||
public $header;
|
||||
|
||||
function parseHeader(){
|
||||
$this->header = $this->unpack(array(
|
||||
"EOTSize" => self::uint32,
|
||||
"FontDataSize" => self::uint32,
|
||||
"Version" => self::uint32,
|
||||
"Flags" => self::uint32,
|
||||
));
|
||||
|
||||
$this->header["FontPANOSE"] = $this->read(10);
|
||||
|
||||
$this->header += $this->unpack(array(
|
||||
"Charset" => self::uint8,
|
||||
"Italic" => self::uint8,
|
||||
"Weight" => self::uint32,
|
||||
"fsType" => self::uint16,
|
||||
"MagicNumber" => self::uint16,
|
||||
"UnicodeRange1" => self::uint32,
|
||||
"UnicodeRange2" => self::uint32,
|
||||
"UnicodeRange3" => self::uint32,
|
||||
"UnicodeRange4" => self::uint32,
|
||||
"CodePageRange1" => self::uint32,
|
||||
"CodePageRange2" => self::uint32,
|
||||
"CheckSumAdjustment" => self::uint32,
|
||||
"Reserved1" => self::uint32,
|
||||
"Reserved2" => self::uint32,
|
||||
"Reserved3" => self::uint32,
|
||||
"Reserved4" => self::uint32,
|
||||
"Padding1" => self::uint16,
|
||||
"FamilyNameSize" => self::uint16,
|
||||
));
|
||||
}
|
||||
|
||||
function parse() {
|
||||
exit("EOT not supported yet");
|
||||
}
|
||||
|
||||
public function readUInt16() {
|
||||
$a = unpack('vv', $this->read(2));
|
||||
return $a['v'];
|
||||
}
|
||||
|
||||
public function readUInt32() {
|
||||
$a = unpack('VV', $this->read(4));
|
||||
return $a['V'];
|
||||
}
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_header.cls.php 34 2011-10-23 13:53:25Z fabien.menager $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Font header container.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
abstract class Font_Header extends Font_Binary_Stream {
|
||||
/**
|
||||
* @var Font_TrueType
|
||||
*/
|
||||
protected $font;
|
||||
protected $def = array();
|
||||
|
||||
public $data;
|
||||
|
||||
public function __construct(Font_TrueType $font) {
|
||||
$this->font = $font;
|
||||
}
|
||||
|
||||
public function encode(){
|
||||
return $this->font->pack($this->def, $this->data);
|
||||
}
|
||||
|
||||
public function parse(){
|
||||
$this->data = $this->font->unpack($this->def);
|
||||
}
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_opentype.cls.php 34 2011-10-23 13:53:25Z fabien.menager $
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__)."/font_truetype.cls.php";
|
||||
require_once dirname(__FILE__)."/font_opentype_table_directory_entry.cls.php";
|
||||
|
||||
/**
|
||||
* Open Type font, the same as a TrueType one.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_OpenType extends Font_TrueType {
|
||||
//
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_opentype_table_directory_entry.cls.php 34 2011-10-23 13:53:25Z fabien.menager $
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__)."/font_truetype_table_directory_entry.cls.php";
|
||||
|
||||
/**
|
||||
* Open Type Table directory entry, the same as a TrueType one.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_OpenType_Table_Directory_Entry extends Font_TrueType_Table_Directory_Entry {
|
||||
|
||||
}
|
|
@ -1,93 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_table_glyf.cls.php 40 2012-01-22 21:48:41Z fabien.menager $
|
||||
*/
|
||||
|
||||
/**
|
||||
* `glyf` font table.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_Table_glyf extends Font_Table {
|
||||
const ARG_1_AND_2_ARE_WORDS = 1;
|
||||
const ARGS_ARE_XY_VALUES = 2;
|
||||
const ROUND_XY_TO_GRID = 4;
|
||||
const WE_HAVE_A_SCALE = 8;
|
||||
const MORE_COMPONENTS = 32;
|
||||
const WE_HAVE_AN_X_AND_Y_SCALE = 64;
|
||||
const WE_HAVE_A_TWO_BY_TWO = 128;
|
||||
const WE_HAVE_INSTRUCTIONS = 256;
|
||||
const USE_MY_METRICS = 512;
|
||||
const OVERLAP_COMPOUND = 1024;
|
||||
|
||||
protected function getGlyphData($offset, $loca, $gid){
|
||||
$font = $this->getFont();
|
||||
|
||||
/*$entryStart = $this->entry->offset;
|
||||
$start = $entryStart + $loca[$gid];
|
||||
$font->seek($start);
|
||||
|
||||
$data = $font->unpack(array(
|
||||
"numberOfContours" => self::int16,
|
||||
"xMin" => self::FWord,
|
||||
"yMin" => self::FWord,
|
||||
"xMax" => self::FWord,
|
||||
"yMax" => self::FWord,
|
||||
));
|
||||
|
||||
$data["outline"] = $font->read($loca[$gid+1] - $font->pos() - $entryStart);*/
|
||||
|
||||
$font->seek($offset + $loca[$gid]);
|
||||
return $font->read($loca[$gid+1] - $loca[$gid]);
|
||||
}
|
||||
|
||||
protected function _parse(){
|
||||
$font = $this->getFont();
|
||||
$offset = $font->pos();
|
||||
|
||||
$loca = $font->getData("loca");
|
||||
$real_loca = array_slice($loca, 0, -1); // Not the last dummy loca entry
|
||||
|
||||
$data = array();
|
||||
|
||||
foreach($real_loca as $gid => $location) {
|
||||
$data[$gid] = $this->getGlyphData($offset, $loca, $gid);
|
||||
}
|
||||
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
protected function _encode() {
|
||||
$font = $this->getFont();
|
||||
$subset = $font->getSubset();
|
||||
$compoundGlyphOffsets = $font->compound_glyph_offsets;
|
||||
$data = $this->data;
|
||||
|
||||
$loca = array();
|
||||
|
||||
$length = 0;
|
||||
foreach($subset as $gid) {
|
||||
$loca[] = $length;
|
||||
$raw = $data[$gid];
|
||||
$len = strlen($raw);
|
||||
|
||||
if (isset($compoundGlyphOffsets[$gid])) {
|
||||
$offsets = $compoundGlyphOffsets[$gid];
|
||||
foreach($offsets as $offset => $newGid) {
|
||||
list($raw[$offset], $raw[$offset+1]) = pack("n", $newGid);
|
||||
}
|
||||
}
|
||||
|
||||
$length += $font->write($raw, strlen($raw));
|
||||
}
|
||||
|
||||
$loca[] = $length; // dummy loca
|
||||
$font->getTableObject("loca")->data = $loca;
|
||||
|
||||
return $length;
|
||||
}
|
||||
}
|
|
@ -1,54 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_table_hmtx.cls.php 40 2012-01-22 21:48:41Z fabien.menager $
|
||||
*/
|
||||
|
||||
/**
|
||||
* `hmtx` font table.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_Table_hmtx extends Font_Table {
|
||||
protected function _parse(){
|
||||
$font = $this->getFont();
|
||||
$offset = $font->pos();
|
||||
|
||||
$numOfLongHorMetrics = $font->getData("hhea", "numOfLongHorMetrics");
|
||||
$numGlyphs = $font->getData("maxp", "numGlyphs");
|
||||
|
||||
$font->seek($offset);
|
||||
|
||||
$data = array();
|
||||
for($gid = 0; $gid < $numOfLongHorMetrics; $gid++) {
|
||||
$advanceWidth = $font->readUInt16();
|
||||
$leftSideBearing = $font->readUInt16();
|
||||
$data[$gid] = array($advanceWidth, $leftSideBearing);
|
||||
}
|
||||
|
||||
if($numOfLongHorMetrics < $numGlyphs){
|
||||
$lastWidth = end($data);
|
||||
$data = array_pad($data, $numGlyphs, $lastWidth);
|
||||
}
|
||||
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
protected function _encode() {
|
||||
$font = $this->getFont();
|
||||
$subset = $font->getSubset();
|
||||
$data = $this->data;
|
||||
|
||||
$length = 0;
|
||||
|
||||
foreach($subset as $gid) {
|
||||
$length += $font->writeUInt16($data[$gid][0]);
|
||||
$length += $font->writeUInt16($data[$gid][1]);
|
||||
}
|
||||
|
||||
return $length;
|
||||
}
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_table_kern.cls.php 34 2011-10-23 13:53:25Z fabien.menager $
|
||||
*/
|
||||
|
||||
/**
|
||||
* `kern` font table.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_Table_kern extends Font_Table {
|
||||
protected function _parse(){
|
||||
$font = $this->getFont();
|
||||
|
||||
$tableOffset = $font->pos();
|
||||
|
||||
$data = $font->unpack(array(
|
||||
"version" => self::uint16,
|
||||
"nTables" => self::uint16,
|
||||
|
||||
// only the first subtable will be parsed
|
||||
"subtableVersion" => self::uint16,
|
||||
"length" => self::uint16,
|
||||
"coverage" => self::uint16,
|
||||
));
|
||||
|
||||
$data["format"] = ($data["coverage"] >> 8);
|
||||
|
||||
$subtable = array();
|
||||
|
||||
switch($data["format"]) {
|
||||
case 0:
|
||||
$subtable = $font->unpack(array(
|
||||
"nPairs" => self::uint16,
|
||||
"searchRange" => self::uint16,
|
||||
"entrySelector" => self::uint16,
|
||||
"rangeShift" => self::uint16,
|
||||
));
|
||||
|
||||
$pairs = array();
|
||||
$tree = array();
|
||||
|
||||
for ($i = 0; $i < $subtable["nPairs"]; $i++) {
|
||||
$left = $font->readUInt16();
|
||||
$right = $font->readUInt16();
|
||||
$value = $font->readInt16();
|
||||
|
||||
$pairs[] = array(
|
||||
"left" => $left,
|
||||
"right" => $right,
|
||||
"value" => $value,
|
||||
);
|
||||
|
||||
$tree[$left][$right] = $value;
|
||||
}
|
||||
|
||||
//$subtable["pairs"] = $pairs;
|
||||
$subtable["tree"] = $tree;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
break;
|
||||
}
|
||||
|
||||
$data["subtable"] = $subtable;
|
||||
|
||||
$this->data = $data;
|
||||
}
|
||||
}
|
|
@ -1,74 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_table_loca.cls.php 43 2012-02-05 22:26:53Z fabien.menager $
|
||||
*/
|
||||
|
||||
/**
|
||||
* `loca` font table.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_Table_loca extends Font_Table {
|
||||
protected function _parse(){
|
||||
$font = $this->getFont();
|
||||
$offset = $font->pos();
|
||||
|
||||
$indexToLocFormat = $font->getData("head", "indexToLocFormat");
|
||||
$numGlyphs = $font->getData("maxp", "numGlyphs");
|
||||
|
||||
$font->seek($offset);
|
||||
|
||||
$data = array();
|
||||
|
||||
// 2 bytes
|
||||
if ($indexToLocFormat == 0) {
|
||||
$d = $font->read(($numGlyphs + 1) * 2);
|
||||
$loc = unpack("n*", $d);
|
||||
|
||||
for ($i = 0; $i <= $numGlyphs; $i++) {
|
||||
$data[] = $loc[$i+1] * 2;
|
||||
}
|
||||
}
|
||||
|
||||
// 4 bytes
|
||||
else if ($indexToLocFormat == 1) {
|
||||
$d = $font->read(($numGlyphs + 1) * 4);
|
||||
$loc = unpack("N*", $d);
|
||||
|
||||
for ($i = 0; $i <= $numGlyphs; $i++) {
|
||||
$data[] = $loc[$i+1];
|
||||
}
|
||||
}
|
||||
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
function _encode(){
|
||||
$font = $this->getFont();
|
||||
$data = $this->data;
|
||||
|
||||
$indexToLocFormat = $font->getData("head", "indexToLocFormat");
|
||||
$numGlyphs = $font->getData("maxp", "numGlyphs");
|
||||
$length = 0;
|
||||
|
||||
// 2 bytes
|
||||
if ($indexToLocFormat == 0) {
|
||||
for ($i = 0; $i <= $numGlyphs; $i++) {
|
||||
$length += $font->writeUInt16($data[$i] / 2);
|
||||
}
|
||||
}
|
||||
|
||||
// 4 bytes
|
||||
else if ($indexToLocFormat == 1) {
|
||||
for ($i = 0; $i <= $numGlyphs; $i++) {
|
||||
$length += $font->writeUInt32($data[$i]);
|
||||
}
|
||||
}
|
||||
|
||||
return $length;
|
||||
}
|
||||
}
|
|
@ -1,84 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_table_name.cls.php 36 2011-11-03 23:02:06Z fabien.menager $
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__)."/font_table_name_record.cls.php";
|
||||
|
||||
/**
|
||||
* `name` font table.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_Table_name extends Font_Table {
|
||||
private static $header_format = array(
|
||||
"format" => self::uint16,
|
||||
"count" => self::uint16,
|
||||
"stringOffset" => self::uint16,
|
||||
);
|
||||
|
||||
protected function _parse(){
|
||||
$font = $this->getFont();
|
||||
$data = array();
|
||||
|
||||
$tableOffset = $font->pos();
|
||||
|
||||
$data = $font->unpack(self::$header_format);
|
||||
|
||||
$records = array();
|
||||
for($i = 0; $i < $data["count"]; $i++) {
|
||||
$record = new Font_Table_name_Record();
|
||||
$record_data = $font->unpack(Font_Table_name_Record::$format);
|
||||
$record->map($record_data);
|
||||
|
||||
$records[] = $record;
|
||||
}
|
||||
|
||||
$names = array();
|
||||
foreach($records as $record) {
|
||||
$font->seek($tableOffset + $data["stringOffset"] + $record->offset);
|
||||
$s = $font->read($record->length);
|
||||
$record->string = Font::UTF16ToUTF8($s);
|
||||
$names[$record->nameID] = $record;
|
||||
}
|
||||
|
||||
$data["records"] = $names;
|
||||
|
||||
$this->data = $data;
|
||||
}
|
||||
|
||||
protected function _encode(){
|
||||
$font = $this->getFont();
|
||||
|
||||
$records = $this->data["records"];
|
||||
$count_records = count($records);
|
||||
|
||||
$this->data["count"] = $count_records;
|
||||
$this->data["stringOffset"] = 6 + $count_records * 12; // 6 => uint16 * 3, 12 => sizeof self::$record_format
|
||||
|
||||
$tableOffset = $font->pos();
|
||||
|
||||
$length = $font->pack(self::$header_format, $this->data);
|
||||
|
||||
$recordsOffset = $font->pos();
|
||||
|
||||
$offset = 0;
|
||||
foreach($records as $record) {
|
||||
$record->length = mb_strlen($record->getUTF16(), "8bit");
|
||||
$record->offset = $offset;
|
||||
$offset += $record->length;
|
||||
$length += $font->pack(Font_Table_name_Record::$format, (array)$record);
|
||||
}
|
||||
|
||||
foreach($records as $record) {
|
||||
$str = $record->getUTF16();
|
||||
$length += $font->write($str, mb_strlen($str, "8bit"));
|
||||
}
|
||||
|
||||
return $length;
|
||||
}
|
||||
}
|
|
@ -1,487 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_truetype.cls.php 41 2012-02-04 18:01:38Z fabien.menager $
|
||||
*/
|
||||
|
||||
$dir = dirname(__FILE__);
|
||||
require_once "$dir/font_binary_stream.cls.php";
|
||||
require_once "$dir/font_truetype_table_directory_entry.cls.php";
|
||||
require_once "$dir/font_truetype_header.cls.php";
|
||||
require_once "$dir/font_table.cls.php";
|
||||
require_once "$dir/adobe_font_metrics.cls.php";
|
||||
|
||||
/**
|
||||
* TrueType font file.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_TrueType extends Font_Binary_Stream {
|
||||
/**
|
||||
* @var Font_TrueType_Header
|
||||
*/
|
||||
public $header = array();
|
||||
|
||||
private $tableOffset = 0; // Used for TTC
|
||||
|
||||
private static $raw = false;
|
||||
|
||||
protected $directory = array();
|
||||
protected $data = array();
|
||||
|
||||
protected $glyph_subset = array();
|
||||
protected $glyph_all = array();
|
||||
public $compound_glyph_offsets = array();
|
||||
|
||||
static $nameIdCodes = array(
|
||||
0 => "Copyright",
|
||||
1 => "FontName",
|
||||
2 => "FontSubfamily",
|
||||
3 => "UniqueID",
|
||||
4 => "FullName",
|
||||
5 => "Version",
|
||||
6 => "PostScriptName",
|
||||
7 => "Trademark",
|
||||
8 => "Manufacturer",
|
||||
9 => "Designer",
|
||||
10 => "Description",
|
||||
11 => "FontVendorURL",
|
||||
12 => "FontDesignerURL",
|
||||
13 => "LicenseDescription",
|
||||
14 => "LicenseURL",
|
||||
// 15
|
||||
16 => "PreferredFamily",
|
||||
17 => "PreferredSubfamily",
|
||||
18 => "CompatibleFullName",
|
||||
19 => "SampleText",
|
||||
);
|
||||
|
||||
static $platforms = array(
|
||||
0 => "Unicode",
|
||||
1 => "Macintosh",
|
||||
// 2 => Reserved
|
||||
3 => "Microsoft",
|
||||
);
|
||||
|
||||
static $plaformSpecific = array(
|
||||
// Unicode
|
||||
0 => array(
|
||||
0 => "Default semantics",
|
||||
1 => "Version 1.1 semantics",
|
||||
2 => "ISO 10646 1993 semantics (deprecated)",
|
||||
3 => "Unicode 2.0 or later semantics",
|
||||
),
|
||||
|
||||
// Macintosh
|
||||
1 => array(
|
||||
0 => "Roman",
|
||||
1 => "Japanese",
|
||||
2 => "Traditional Chinese",
|
||||
3 => "Korean",
|
||||
4 => "Arabic",
|
||||
5 => "Hebrew",
|
||||
6 => "Greek",
|
||||
7 => "Russian",
|
||||
8 => "RSymbol",
|
||||
9 => "Devanagari",
|
||||
10 => "Gurmukhi",
|
||||
11 => "Gujarati",
|
||||
12 => "Oriya",
|
||||
13 => "Bengali",
|
||||
14 => "Tamil",
|
||||
15 => "Telugu",
|
||||
16 => "Kannada",
|
||||
17 => "Malayalam",
|
||||
18 => "Sinhalese",
|
||||
19 => "Burmese",
|
||||
20 => "Khmer",
|
||||
21 => "Thai",
|
||||
22 => "Laotian",
|
||||
23 => "Georgian",
|
||||
24 => "Armenian",
|
||||
25 => "Simplified Chinese",
|
||||
26 => "Tibetan",
|
||||
27 => "Mongolian",
|
||||
28 => "Geez",
|
||||
29 => "Slavic",
|
||||
30 => "Vietnamese",
|
||||
31 => "Sindhi",
|
||||
),
|
||||
|
||||
// Microsoft
|
||||
3 => array(
|
||||
0 => "Symbol",
|
||||
1 => "Unicode BMP (UCS-2)",
|
||||
2 => "ShiftJIS",
|
||||
3 => "PRC",
|
||||
4 => "Big5",
|
||||
5 => "Wansung",
|
||||
6 => "Johab",
|
||||
// 7 => Reserved
|
||||
// 8 => Reserved
|
||||
// 9 => Reserved
|
||||
10 => "Unicode UCS-4",
|
||||
),
|
||||
);
|
||||
|
||||
static $macCharNames = array(
|
||||
".notdef", ".null", "CR",
|
||||
"space", "exclam", "quotedbl", "numbersign",
|
||||
"dollar", "percent", "ampersand", "quotesingle",
|
||||
"parenleft", "parenright", "asterisk", "plus",
|
||||
"comma", "hyphen", "period", "slash",
|
||||
"zero", "one", "two", "three",
|
||||
"four", "five", "six", "seven",
|
||||
"eight", "nine", "colon", "semicolon",
|
||||
"less", "equal", "greater", "question",
|
||||
"at", "A", "B", "C", "D", "E", "F", "G",
|
||||
"H", "I", "J", "K", "L", "M", "N", "O",
|
||||
"P", "Q", "R", "S", "T", "U", "V", "W",
|
||||
"X", "Y", "Z", "bracketleft",
|
||||
"backslash", "bracketright", "asciicircum", "underscore",
|
||||
"grave", "a", "b", "c", "d", "e", "f", "g",
|
||||
"h", "i", "j", "k", "l", "m", "n", "o",
|
||||
"p", "q", "r", "s", "t", "u", "v", "w",
|
||||
"x", "y", "z", "braceleft",
|
||||
"bar", "braceright", "asciitilde", "Adieresis",
|
||||
"Aring", "Ccedilla", "Eacute", "Ntilde",
|
||||
"Odieresis", "Udieresis", "aacute", "agrave",
|
||||
"acircumflex", "adieresis", "atilde", "aring",
|
||||
"ccedilla", "eacute", "egrave", "ecircumflex",
|
||||
"edieresis", "iacute", "igrave", "icircumflex",
|
||||
"idieresis", "ntilde", "oacute", "ograve",
|
||||
"ocircumflex", "odieresis", "otilde", "uacute",
|
||||
"ugrave", "ucircumflex", "udieresis", "dagger",
|
||||
"degree", "cent", "sterling", "section",
|
||||
"bullet", "paragraph", "germandbls", "registered",
|
||||
"copyright", "trademark", "acute", "dieresis",
|
||||
"notequal", "AE", "Oslash", "infinity",
|
||||
"plusminus", "lessequal", "greaterequal", "yen",
|
||||
"mu", "partialdiff", "summation", "product",
|
||||
"pi", "integral", "ordfeminine", "ordmasculine",
|
||||
"Omega", "ae", "oslash", "questiondown",
|
||||
"exclamdown", "logicalnot", "radical", "florin",
|
||||
"approxequal", "increment", "guillemotleft", "guillemotright",
|
||||
"ellipsis", "nbspace", "Agrave", "Atilde",
|
||||
"Otilde", "OE", "oe", "endash",
|
||||
"emdash", "quotedblleft", "quotedblright", "quoteleft",
|
||||
"quoteright", "divide", "lozenge", "ydieresis",
|
||||
"Ydieresis", "fraction", "currency", "guilsinglleft",
|
||||
"guilsinglright", "fi", "fl", "daggerdbl",
|
||||
"periodcentered", "quotesinglbase", "quotedblbase", "perthousand",
|
||||
"Acircumflex", "Ecircumflex", "Aacute", "Edieresis",
|
||||
"Egrave", "Iacute", "Icircumflex", "Idieresis",
|
||||
"Igrave", "Oacute", "Ocircumflex", "applelogo",
|
||||
"Ograve", "Uacute", "Ucircumflex", "Ugrave",
|
||||
"dotlessi", "circumflex", "tilde", "macron",
|
||||
"breve", "dotaccent", "ring", "cedilla",
|
||||
"hungarumlaut", "ogonek", "caron", "Lslash",
|
||||
"lslash", "Scaron", "scaron", "Zcaron",
|
||||
"zcaron", "brokenbar", "Eth", "eth",
|
||||
"Yacute", "yacute", "Thorn", "thorn",
|
||||
"minus", "multiply", "onesuperior", "twosuperior",
|
||||
"threesuperior", "onehalf", "onequarter", "threequarters",
|
||||
"franc", "Gbreve", "gbreve", "Idot",
|
||||
"Scedilla", "scedilla", "Cacute", "cacute",
|
||||
"Ccaron", "ccaron", "dmacron"
|
||||
);
|
||||
|
||||
function getTable(){
|
||||
$this->parseTableEntries();
|
||||
return $this->directory;
|
||||
}
|
||||
|
||||
function setTableOffset($offset) {
|
||||
$this->tableOffset = $offset;
|
||||
}
|
||||
|
||||
function parse() {
|
||||
$this->parseTableEntries();
|
||||
|
||||
$this->data = array();
|
||||
|
||||
foreach($this->directory as $tag => $table) {
|
||||
if (empty($this->data[$tag])) {
|
||||
$this->readTable($tag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function utf8toUnicode($str) {
|
||||
$len = strlen($str);
|
||||
$out = array();
|
||||
|
||||
for ($i = 0; $i < $len; $i++) {
|
||||
$uni = -1;
|
||||
$h = ord($str[$i]);
|
||||
|
||||
if ( $h <= 0x7F ) {
|
||||
$uni = $h;
|
||||
}
|
||||
elseif ( $h >= 0xC2 ) {
|
||||
if ( ($h <= 0xDF) && ($i < $len -1) )
|
||||
$uni = ($h & 0x1F) << 6 | (ord($str[++$i]) & 0x3F);
|
||||
elseif ( ($h <= 0xEF) && ($i < $len -2) )
|
||||
$uni = ($h & 0x0F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F);
|
||||
elseif ( ($h <= 0xF4) && ($i < $len -3) )
|
||||
$uni = ($h & 0x0F) << 18 | (ord($str[++$i]) & 0x3F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F);
|
||||
}
|
||||
|
||||
if ($uni >= 0) {
|
||||
$out[] = $uni;
|
||||
}
|
||||
}
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
function lookupGlyph($gid, &$gids, &$newGlyphOffsets, $glyfOffset, $indexToLoc, $gidToCid) {
|
||||
$this->seek($glyfOffset + $indexToLoc[$gid]);
|
||||
|
||||
$numberOfContours = $this->readInt16();
|
||||
|
||||
if ($numberOfContours < 0) {
|
||||
$this->skip(8);
|
||||
$compoundOffset = 10; // 2 + 8
|
||||
|
||||
do {
|
||||
$flags = $this->readUInt16();
|
||||
$compoundOffset += 2;
|
||||
|
||||
$glyphIndex = $this->readUInt16();
|
||||
$newGlyphOffsets[$compoundOffset] = $glyphIndex;
|
||||
|
||||
$compoundOffset += 2;
|
||||
|
||||
if (!in_array($glyphIndex, $gids) && isset($indexToLoc[$glyphIndex])) {
|
||||
$code = $gidToCid[$glyphIndex];
|
||||
$gids[$code] = $glyphIndex;
|
||||
}
|
||||
|
||||
$pos = $this->pos();
|
||||
$this->lookupGlyph($glyphIndex, $gids, $newGids, $glyfOffset, $indexToLoc, $gidToCid);
|
||||
$this->seek($pos);
|
||||
|
||||
$offset = 0;
|
||||
|
||||
// skip some bytes by case
|
||||
if ($flags & Font_Table_glyf::ARG_1_AND_2_ARE_WORDS) {
|
||||
$offset += 4;
|
||||
}
|
||||
else {
|
||||
$offset += 2;
|
||||
}
|
||||
|
||||
if ($flags & Font_Table_glyf::WE_HAVE_A_SCALE) {
|
||||
$offset += 2;
|
||||
}
|
||||
elseif ($flags & Font_Table_glyf::WE_HAVE_AN_X_AND_Y_SCALE) {
|
||||
$offset += 4;
|
||||
}
|
||||
elseif ($flags & Font_Table_glyf::WE_HAVE_A_TWO_BY_TWO) {
|
||||
$offset += 8;
|
||||
}
|
||||
|
||||
$this->skip($offset);
|
||||
$compoundOffset += $offset;
|
||||
|
||||
} while ($flags & Font_Table_glyf::MORE_COMPONENTS);
|
||||
}
|
||||
}
|
||||
|
||||
function setSubset($subset) {
|
||||
if ( !is_array($subset) ) {
|
||||
$subset = $this->utf8toUnicode($subset);
|
||||
}
|
||||
|
||||
$subtable = null;
|
||||
foreach($this->getData("cmap", "subtables") as $_subtable) {
|
||||
if ($_subtable["platformID"] == 0 || $_subtable["platformID"] == 3 && $_subtable["platformSpecificID"] == 1) {
|
||||
$subtable = $_subtable;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$subtable) return;
|
||||
|
||||
$gids = array();
|
||||
foreach($subset as $code) {
|
||||
if (!isset($subtable["glyphIndexArray"][$code])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$gids[$code] = $subtable["glyphIndexArray"][$code];
|
||||
}
|
||||
|
||||
// add compound glyphs
|
||||
$indexToLoc = $this->getData("loca");
|
||||
$glyfOffset = $this->directory["glyf"]->offset;
|
||||
$cidToGid = $subtable["glyphIndexArray"];
|
||||
$gidToCid = array_flip($cidToGid);
|
||||
$newGlyphOffsets = array();
|
||||
|
||||
foreach($gids as $code => $gid) {
|
||||
if ($gid === null) {
|
||||
unset($gids[$code]);
|
||||
continue;
|
||||
}
|
||||
|
||||
$_newGlyphOffsets = array();
|
||||
$this->lookupGlyph($gid, $gids, $_newGlyphOffsets, $glyfOffset, $indexToLoc, $gidToCid);
|
||||
|
||||
if (count($_newGlyphOffsets)) {
|
||||
$newGlyphOffsets[$gid] = $_newGlyphOffsets;
|
||||
}
|
||||
}
|
||||
|
||||
ksort($gids);
|
||||
|
||||
foreach($newGlyphOffsets as $_gid => $compoundOffsets) {
|
||||
foreach($compoundOffsets as $offset => $gid) {
|
||||
$newGlyphOffsets[$_gid][$offset] = array_search($gid, array_values($gids));
|
||||
}
|
||||
}
|
||||
|
||||
$this->compound_glyph_offsets = $newGlyphOffsets;
|
||||
$this->glyph_subset = $gids;
|
||||
$this->glyph_all = $subtable["glyphIndexArray"];
|
||||
}
|
||||
|
||||
function getSubset() {
|
||||
if (empty($this->glyph_subset)) {
|
||||
return $this->glyph_all;
|
||||
}
|
||||
|
||||
return $this->glyph_subset;
|
||||
}
|
||||
|
||||
function encode($tags = array()){
|
||||
if (!self::$raw) {
|
||||
$tags = array_merge(array("head", "hhea", "cmap", "hmtx", "maxp", "glyf", "loca", "name", "post"), $tags);
|
||||
}
|
||||
else {
|
||||
$tags = array_keys($this->directory);
|
||||
}
|
||||
|
||||
$num_tables = count($tags);
|
||||
$n = 16;// @todo
|
||||
|
||||
Font::d("Tables : ".implode(", ", $tags));
|
||||
|
||||
$entries = array();
|
||||
foreach($tags as $tag) {
|
||||
if (!isset($this->directory[$tag])) {
|
||||
Font::d(" >> '$tag' table doesn't exist");
|
||||
continue;
|
||||
}
|
||||
|
||||
$entries[$tag] = $this->directory[$tag];
|
||||
}
|
||||
|
||||
$this->header->data["numTables"] = $num_tables;
|
||||
$this->header->encode();
|
||||
|
||||
$directory_offset = $this->pos();
|
||||
$offset = $directory_offset + $num_tables * $n;
|
||||
$this->seek($offset);
|
||||
|
||||
$i = 0;
|
||||
foreach($entries as $tag => $entry) {
|
||||
$entry->encode($directory_offset + $i * $n);
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
function parseHeader(){
|
||||
if (!empty($this->header)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->seek($this->tableOffset);
|
||||
|
||||
$this->header = new Font_TrueType_Header($this);
|
||||
$this->header->parse();
|
||||
}
|
||||
|
||||
function parseTableEntries(){
|
||||
$this->parseHeader();
|
||||
|
||||
if (!empty($this->directory)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$class = get_class($this)."_Table_Directory_Entry";
|
||||
|
||||
for($i = 0; $i < $this->header->data["numTables"]; $i++) {
|
||||
$entry = new $class($this);
|
||||
$this->directory[$entry->tag] = $entry;
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeFUnit($value, $base = 1000){
|
||||
return round($value * ($base / $this->getData("head", "unitsPerEm")));
|
||||
}
|
||||
|
||||
protected function readTable($tag) {
|
||||
$this->parseTableEntries();
|
||||
|
||||
if (!self::$raw) {
|
||||
$name_canon = preg_replace("/[^a-z0-9]/", "", strtolower($tag));
|
||||
$class_file = dirname(__FILE__)."/font_table_$name_canon.cls.php";
|
||||
|
||||
if (!isset($this->directory[$tag]) || !file_exists($class_file)) {
|
||||
return;
|
||||
}
|
||||
|
||||
require_once $class_file;
|
||||
$class = "Font_Table_$name_canon";
|
||||
}
|
||||
else {
|
||||
$class = "Font_Table";
|
||||
}
|
||||
|
||||
$table = new $class($this->directory[$tag]);
|
||||
$table->parse();
|
||||
|
||||
$this->data[$tag] = $table;
|
||||
}
|
||||
|
||||
public function getTableObject($name) {
|
||||
return $this->data[$name];
|
||||
}
|
||||
|
||||
public function getData($name, $key = null) {
|
||||
$this->parseTableEntries();
|
||||
|
||||
if (empty($this->data[$name])) {
|
||||
$this->readTable($name);
|
||||
}
|
||||
|
||||
if (!isset($this->data[$name])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!$key) {
|
||||
return $this->data[$name]->data;
|
||||
}
|
||||
else {
|
||||
return $this->data[$name]->data[$key];
|
||||
}
|
||||
}
|
||||
|
||||
function saveAdobeFontMetrics($file, $encoding = null) {
|
||||
$afm = new Adobe_Font_Metrics($this);
|
||||
$afm->write($file, $encoding);
|
||||
}
|
||||
|
||||
function reduce(){
|
||||
$names_to_keep = array(0, 1, 2, 3, 4, 5, 6);
|
||||
foreach($this->data["name"]->data["records"] as $id => $rec) {
|
||||
if (in_array($id, $names_to_keep)) continue;
|
||||
unset($this->data["name"]->data["records"][$id]);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_truetype_table_directory_entry.cls.php 34 2011-10-23 13:53:25Z fabien.menager $
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__)."/font_table_directory_entry.cls.php";
|
||||
|
||||
/**
|
||||
* TrueType table directory entry.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_TrueType_Table_Directory_Entry extends Font_Table_Directory_Entry {
|
||||
function __construct(Font_TrueType $font) {
|
||||
parent::__construct($font);
|
||||
$this->checksum = $this->readUInt32();
|
||||
$this->offset = $this->readUInt32();
|
||||
$this->length = $this->readUInt32();
|
||||
$this->entryLength += 12;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @package php-font-lib
|
||||
* @link http://php-font-lib.googlecode.com/
|
||||
* @author Fabien Ménager <fabien.menager@gmail.com>
|
||||
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
|
||||
* @version $Id: font_woff_table_directory_entry.cls.php 39 2012-01-15 12:25:22Z fabien.menager $
|
||||
*/
|
||||
|
||||
require_once dirname(__FILE__)."/font_table_directory_entry.cls.php";
|
||||
|
||||
/**
|
||||
* WOFF font file table directory entry.
|
||||
*
|
||||
* @package php-font-lib
|
||||
*/
|
||||
class Font_WOFF_Table_Directory_Entry extends Font_Table_Directory_Entry {
|
||||
function __construct(Font_WOFF $font) {
|
||||
parent::__construct($font);
|
||||
$this->offset = $this->readUInt32();
|
||||
$this->length = $this->readUInt32();
|
||||
$this->origLength = $this->readUInt32();
|
||||
$this->checksum = $this->readUInt32();
|
||||
}
|
||||
}
|
|
@ -1,231 +0,0 @@
|
|||
// Adobe Standard Encoding table for ttf2pt1
|
||||
// Thomas Henlich <Thomas.Henlich@mailbox.tu-dresden.de>
|
||||
|
||||
=20 U+0020 SPACE
|
||||
=21 U+0021 EXCLAMATION MARK
|
||||
=22 U+0022 QUOTATION MARK
|
||||
=23 U+0023 NUMBER SIGN
|
||||
=24 U+0024 DOLLAR SIGN
|
||||
=25 U+0025 PERCENT SIGN
|
||||
=26 U+0026 AMPERSAND
|
||||
=27 U+2019 RIGHT SINGLE QUOTATION MARK
|
||||
=28 U+0028 LEFT PARENTHESIS
|
||||
=29 U+0029 RIGHT PARENTHESIS
|
||||
=2A U+002A ASTERISK
|
||||
=2B U+002B PLUS SIGN
|
||||
=2C U+002C COMMA
|
||||
=2D U+002D HYPHEN-MINUS
|
||||
=2E U+002E FULL STOP
|
||||
=2F U+002F SOLIDUS
|
||||
=30 U+0030 DIGIT ZERO
|
||||
=31 U+0031 DIGIT ONE
|
||||
=32 U+0032 DIGIT TWO
|
||||
=33 U+0033 DIGIT THREE
|
||||
=34 U+0034 DIGIT FOUR
|
||||
=35 U+0035 DIGIT FIVE
|
||||
=36 U+0036 DIGIT SIX
|
||||
=37 U+0037 DIGIT SEVEN
|
||||
=38 U+0038 DIGIT EIGHT
|
||||
=39 U+0039 DIGIT NINE
|
||||
=3A U+003A COLON
|
||||
=3B U+003B SEMICOLON
|
||||
=3C U+003C LESS-THAN SIGN
|
||||
=3D U+003D EQUALS SIGN
|
||||
=3E U+003E GREATER-THAN SIGN
|
||||
=3F U+003F QUESTION MARK
|
||||
=40 U+0040 COMMERCIAL AT
|
||||
=41 U+0041 LATIN CAPITAL LETTER A
|
||||
=42 U+0042 LATIN CAPITAL LETTER B
|
||||
=43 U+0043 LATIN CAPITAL LETTER C
|
||||
=44 U+0044 LATIN CAPITAL LETTER D
|
||||
=45 U+0045 LATIN CAPITAL LETTER E
|
||||
=46 U+0046 LATIN CAPITAL LETTER F
|
||||
=47 U+0047 LATIN CAPITAL LETTER G
|
||||
=48 U+0048 LATIN CAPITAL LETTER H
|
||||
=49 U+0049 LATIN CAPITAL LETTER I
|
||||
=4A U+004A LATIN CAPITAL LETTER J
|
||||
=4B U+004B LATIN CAPITAL LETTER K
|
||||
=4C U+004C LATIN CAPITAL LETTER L
|
||||
=4D U+004D LATIN CAPITAL LETTER M
|
||||
=4E U+004E LATIN CAPITAL LETTER N
|
||||
=4F U+004F LATIN CAPITAL LETTER O
|
||||
=50 U+0050 LATIN CAPITAL LETTER P
|
||||
=51 U+0051 LATIN CAPITAL LETTER Q
|
||||
=52 U+0052 LATIN CAPITAL LETTER R
|
||||
=53 U+0053 LATIN CAPITAL LETTER S
|
||||
=54 U+0054 LATIN CAPITAL LETTER T
|
||||
=55 U+0055 LATIN CAPITAL LETTER U
|
||||
=56 U+0056 LATIN CAPITAL LETTER V
|
||||
=57 U+0057 LATIN CAPITAL LETTER W
|
||||
=58 U+0058 LATIN CAPITAL LETTER X
|
||||
=59 U+0059 LATIN CAPITAL LETTER Y
|
||||
=5A U+005A LATIN CAPITAL LETTER Z
|
||||
=5B U+005B LEFT SQUARE BRACKET
|
||||
=5C U+005C REVERSE SOLIDUS
|
||||
=5D U+005D RIGHT SQUARE BRACKET
|
||||
=5E U+005E CIRCUMFLEX ACCENT
|
||||
=5F U+005F LOW LINE
|
||||
=60 U+2018 LEFT SINGLE QUOTATION MARK
|
||||
=61 U+0061 LATIN SMALL LETTER A
|
||||
=62 U+0062 LATIN SMALL LETTER B
|
||||
=63 U+0063 LATIN SMALL LETTER C
|
||||
=64 U+0064 LATIN SMALL LETTER D
|
||||
=65 U+0065 LATIN SMALL LETTER E
|
||||
=66 U+0066 LATIN SMALL LETTER F
|
||||
=67 U+0067 LATIN SMALL LETTER G
|
||||
=68 U+0068 LATIN SMALL LETTER H
|
||||
=69 U+0069 LATIN SMALL LETTER I
|
||||
=6A U+006A LATIN SMALL LETTER J
|
||||
=6B U+006B LATIN SMALL LETTER K
|
||||
=6C U+006C LATIN SMALL LETTER L
|
||||
=6D U+006D LATIN SMALL LETTER M
|
||||
=6E U+006E LATIN SMALL LETTER N
|
||||
=6F U+006F LATIN SMALL LETTER O
|
||||
=70 U+0070 LATIN SMALL LETTER P
|
||||
=71 U+0071 LATIN SMALL LETTER Q
|
||||
=72 U+0072 LATIN SMALL LETTER R
|
||||
=73 U+0073 LATIN SMALL LETTER S
|
||||
=74 U+0074 LATIN SMALL LETTER T
|
||||
=75 U+0075 LATIN SMALL LETTER U
|
||||
=76 U+0076 LATIN SMALL LETTER V
|
||||
=77 U+0077 LATIN SMALL LETTER W
|
||||
=78 U+0078 LATIN SMALL LETTER X
|
||||
=79 U+0079 LATIN SMALL LETTER Y
|
||||
=7A U+007A LATIN SMALL LETTER Z
|
||||
=7B U+007B LEFT CURLY BRACKET
|
||||
=7C U+007C VERTICAL LINE
|
||||
=7D U+007D RIGHT CURLY BRACKET
|
||||
=7E U+007E TILDE
|
||||
=A1 U+00A1 INVERTED EXCLAMATION MARK
|
||||
=A2 U+00A2 CENT SIGN
|
||||
=A3 U+00A3 POUND SIGN
|
||||
=A4 U+2044 FRACTION SLASH
|
||||
=A5 U+00A5 YEN SIGN
|
||||
=A6 U+0192 LATIN SMALL LETTER F WITH HOOK
|
||||
=A7 U+00A7 SECTION SIGN
|
||||
=A8 U+00A4 CURRENCY SIGN
|
||||
=A9 U+0027 APOSTROPHE
|
||||
=AA U+201C LEFT DOUBLE QUOTATION MARK
|
||||
=AB U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
=AC U+2039 SINGLE LEFT-POINTING ANGLE QUOTATION MARK
|
||||
=AD U+203A SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
|
||||
=AE U+FB01 LATIN SMALL LIGATURE FI
|
||||
=AF U+FB02 LATIN SMALL LIGATURE FL
|
||||
=B1 U+2013 EN DASH
|
||||
=B2 U+2020 DAGGER
|
||||
=B3 U+2021 DOUBLE DAGGER
|
||||
=B4 U+00B7 MIDDLE DOT
|
||||
=B6 U+00B6 PILCROW SIGN
|
||||
=B7 U+2022 BULLET
|
||||
=B8 U+201A SINGLE LOW-9 QUOTATION MARK
|
||||
=B9 U+201E DOUBLE LOW-9 QUOTATION MARK
|
||||
=BA U+201D RIGHT DOUBLE QUOTATION MARK
|
||||
=BB U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
|
||||
=BC U+2026 HORIZONTAL ELLIPSIS
|
||||
=BD U+2030 PER MILLE SIGN
|
||||
=BF U+00BF INVERTED QUESTION MARK
|
||||
=C1 U+0060 GRAVE ACCENT
|
||||
=C2 U+00B4 ACUTE ACCENT
|
||||
=C3 U+02C6 MODIFIER LETTER CIRCUMFLEX ACCENT
|
||||
=C4 U+02DC SMALL TILDE
|
||||
=C5 U+00AF MACRON
|
||||
=C6 U+02D8 BREVE
|
||||
=C7 U+02D9 DOT ABOVE
|
||||
=C8 U+00A8 DIAERESIS
|
||||
=CA U+02DA RING ABOVE
|
||||
=CB U+00B8 CEDILLA
|
||||
=CD U+02DD DOUBLE ACUTE ACCENT
|
||||
=CE U+02DB OGONEK
|
||||
=CF U+02C7 CARON
|
||||
=D0 U+2014 EM DASH
|
||||
=E1 U+00C6 LATIN CAPITAL LETTER AE
|
||||
=E3 U+00AA FEMININE ORDINAL INDICATOR
|
||||
=E8 U+0141 LATIN CAPITAL LETTER L WITH STROKE
|
||||
=E9 U+00D8 LATIN CAPITAL LETTER O WITH STROKE
|
||||
=EA U+0152 LATIN CAPITAL LIGATURE OE
|
||||
=EB U+00BA MASCULINE ORDINAL INDICATOR
|
||||
=F1 U+00E6 LATIN SMALL LETTER AE
|
||||
=F5 U+0131 LATIN SMALL LETTER DOTLESS I
|
||||
=F8 U+0142 LATIN SMALL LETTER L WITH STROKE
|
||||
=F9 U+00F8 LATIN SMALL LETTER O WITH STROKE
|
||||
=FA U+0153 LATIN SMALL LIGATURE OE
|
||||
=FB U+00DF LATIN SMALL LETTER SHARP S
|
||||
|
||||
// unencoded characters:
|
||||
=100 U+00E7 LATIN SMALL LETTER C WITH CEDILLA
|
||||
=101 U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
|
||||
=102 U+00E3 LATIN SMALL LETTER A WITH TILDE
|
||||
=103 U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
|
||||
=104 U+00B3 SUPERSCRIPT THREE
|
||||
=105 U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
|
||||
=106 U+00FE LATIN SMALL LETTER THORN
|
||||
=107 U+00E8 LATIN SMALL LETTER E WITH GRAVE
|
||||
=108 U+00B2 SUPERSCRIPT TWO
|
||||
=109 U+00E9 LATIN SMALL LETTER E WITH ACUTE
|
||||
=10A U+00F5 LATIN SMALL LETTER O WITH TILDE
|
||||
=10B U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
|
||||
=10C U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
|
||||
=10D U+00FD LATIN SMALL LETTER Y WITH ACUTE
|
||||
=10E U+00FC LATIN SMALL LETTER U WITH DIAERESIS
|
||||
=10F U+00BE VULGAR FRACTION THREE QUARTERS
|
||||
=110 U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
|
||||
=111 U+00D0 LATIN CAPITAL LETTER ETH
|
||||
=112 U+00EB LATIN SMALL LETTER E WITH DIAERESIS
|
||||
=113 U+00F9 LATIN SMALL LETTER U WITH GRAVE
|
||||
=114 U+2122 TRADE MARK SIGN
|
||||
=115 U+00F2 LATIN SMALL LETTER O WITH GRAVE
|
||||
=116 U+0161 LATIN SMALL LETTER S WITH CARON
|
||||
=117 U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
|
||||
=118 U+00FA LATIN SMALL LETTER U WITH ACUTE
|
||||
=119 U+00E0 LATIN SMALL LETTER A WITH GRAVE
|
||||
=11A U+00F1 LATIN SMALL LETTER N WITH TILDE
|
||||
=11B U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
|
||||
=11C U+017E LATIN SMALL LETTER Z WITH CARON
|
||||
=11D U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
|
||||
=11E U+00D1 LATIN CAPITAL LETTER N WITH TILDE
|
||||
=11F U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
|
||||
=120 U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
|
||||
=121 U+00CD LATIN CAPITAL LETTER I WITH ACUTE
|
||||
=122 U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
|
||||
=123 U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
|
||||
=124 U+0160 LATIN CAPITAL LETTER S WITH CARON
|
||||
=125 U+00CC LATIN CAPITAL LETTER I WITH GRAVE
|
||||
=126 U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
|
||||
=127 U+00D2 LATIN CAPITAL LETTER O WITH GRAVE
|
||||
=128 U+00C8 LATIN CAPITAL LETTER E WITH GRAVE
|
||||
=129 U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
|
||||
=12A U+00AE REGISTERED SIGN
|
||||
=12B U+00D5 LATIN CAPITAL LETTER O WITH TILDE
|
||||
=12C U+00BC VULGAR FRACTION ONE QUARTER
|
||||
=12D U+00D9 LATIN CAPITAL LETTER U WITH GRAVE
|
||||
=12E U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
|
||||
=12F U+00DE LATIN CAPITAL LETTER THORN
|
||||
=130 U+00F7 DIVISION SIGN
|
||||
=131 U+00C3 LATIN CAPITAL LETTER A WITH TILDE
|
||||
=132 U+00DA LATIN CAPITAL LETTER U WITH ACUTE
|
||||
=133 U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
|
||||
=134 U+00AC NOT SIGN
|
||||
=135 U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
|
||||
=136 U+00EF LATIN SMALL LETTER I WITH DIAERESIS
|
||||
=137 U+00ED LATIN SMALL LETTER I WITH ACUTE
|
||||
=138 U+00E1 LATIN SMALL LETTER A WITH ACUTE
|
||||
=139 U+00B1 PLUS-MINUS SIGN
|
||||
=13A U+00D7 MULTIPLICATION SIGN
|
||||
=13B U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
|
||||
=13C U+2212 MINUS SIGN
|
||||
=13D U+00B9 SUPERSCRIPT ONE
|
||||
=13E U+00C9 LATIN CAPITAL LETTER E WITH ACUTE
|
||||
=13F U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
|
||||
=140 U+00A9 COPYRIGHT SIGN
|
||||
=141 U+00C0 LATIN CAPITAL LETTER A WITH GRAVE
|
||||
=142 U+00F6 LATIN SMALL LETTER O WITH DIAERESIS
|
||||
=143 U+00F3 LATIN SMALL LETTER O WITH ACUTE
|
||||
=144 U+00B0 DEGREE SIGN
|
||||
=145 U+00EC LATIN SMALL LETTER I WITH GRAVE
|
||||
=146 U+00B5 MICRO SIGN
|
||||
=147 U+00D3 LATIN CAPITAL LETTER O WITH ACUTE
|
||||
=148 U+00F0 LATIN SMALL LETTER ETH
|
||||
=149 U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
|
||||
=14A U+00DD LATIN CAPITAL LETTER Y WITH ACUTE
|
||||
=14B U+00A6 BROKEN BAR
|
||||
=14C U+00BD VULGAR FRACTION ONE HALF
|
|
@ -1,251 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0160 Scaron
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+015A Sacute
|
||||
!8D U+0164 Tcaron
|
||||
!8E U+017D Zcaron
|
||||
!8F U+0179 Zacute
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9A U+0161 scaron
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+015B sacute
|
||||
!9D U+0165 tcaron
|
||||
!9E U+017E zcaron
|
||||
!9F U+017A zacute
|
||||
!A0 U+00A0 space
|
||||
!A1 U+02C7 caron
|
||||
!A2 U+02D8 breve
|
||||
!A3 U+0141 Lslash
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+0104 Aogonek
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+015E Scedilla
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+017B Zdotaccent
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+02DB ogonek
|
||||
!B3 U+0142 lslash
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+0105 aogonek
|
||||
!BA U+015F scedilla
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+013D Lcaron
|
||||
!BD U+02DD hungarumlaut
|
||||
!BE U+013E lcaron
|
||||
!BF U+017C zdotaccent
|
||||
!C0 U+0154 Racute
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+0139 Lacute
|
||||
!C6 U+0106 Cacute
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0118 Eogonek
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+011A Ecaron
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+010E Dcaron
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+0147 Ncaron
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+0150 Ohungarumlaut
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+0158 Rcaron
|
||||
!D9 U+016E Uring
|
||||
!DA U+00DA Uacute
|
||||
!DB U+0170 Uhungarumlaut
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+0162 Tcommaaccent
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0155 racute
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+013A lacute
|
||||
!E6 U+0107 cacute
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+0119 eogonek
|
||||
!EB U+00EB edieresis
|
||||
!EC U+011B ecaron
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+010F dcaron
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+0148 ncaron
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+0151 ohungarumlaut
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+0159 rcaron
|
||||
!F9 U+016F uring
|
||||
!FA U+00FA uacute
|
||||
!FB U+0171 uhungarumlaut
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+0163 tcommaaccent
|
||||
!FF U+02D9 dotaccent
|
|
@ -1,255 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0402 afii10051
|
||||
!81 U+0403 afii10052
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0453 afii10100
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+20AC Euro
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0409 afii10058
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+040A afii10059
|
||||
!8D U+040C afii10061
|
||||
!8E U+040B afii10060
|
||||
!8F U+040F afii10145
|
||||
!90 U+0452 afii10099
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9A U+0459 afii10106
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+045A afii10107
|
||||
!9D U+045C afii10109
|
||||
!9E U+045B afii10108
|
||||
!9F U+045F afii10193
|
||||
!A0 U+00A0 space
|
||||
!A1 U+040E afii10062
|
||||
!A2 U+045E afii10110
|
||||
!A3 U+0408 afii10057
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+0490 afii10050
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+0401 afii10023
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+0404 afii10053
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+0407 afii10056
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+0406 afii10055
|
||||
!B3 U+0456 afii10103
|
||||
!B4 U+0491 afii10098
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+0451 afii10071
|
||||
!B9 U+2116 afii61352
|
||||
!BA U+0454 afii10101
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+0458 afii10105
|
||||
!BD U+0405 afii10054
|
||||
!BE U+0455 afii10102
|
||||
!BF U+0457 afii10104
|
||||
!C0 U+0410 afii10017
|
||||
!C1 U+0411 afii10018
|
||||
!C2 U+0412 afii10019
|
||||
!C3 U+0413 afii10020
|
||||
!C4 U+0414 afii10021
|
||||
!C5 U+0415 afii10022
|
||||
!C6 U+0416 afii10024
|
||||
!C7 U+0417 afii10025
|
||||
!C8 U+0418 afii10026
|
||||
!C9 U+0419 afii10027
|
||||
!CA U+041A afii10028
|
||||
!CB U+041B afii10029
|
||||
!CC U+041C afii10030
|
||||
!CD U+041D afii10031
|
||||
!CE U+041E afii10032
|
||||
!CF U+041F afii10033
|
||||
!D0 U+0420 afii10034
|
||||
!D1 U+0421 afii10035
|
||||
!D2 U+0422 afii10036
|
||||
!D3 U+0423 afii10037
|
||||
!D4 U+0424 afii10038
|
||||
!D5 U+0425 afii10039
|
||||
!D6 U+0426 afii10040
|
||||
!D7 U+0427 afii10041
|
||||
!D8 U+0428 afii10042
|
||||
!D9 U+0429 afii10043
|
||||
!DA U+042A afii10044
|
||||
!DB U+042B afii10045
|
||||
!DC U+042C afii10046
|
||||
!DD U+042D afii10047
|
||||
!DE U+042E afii10048
|
||||
!DF U+042F afii10049
|
||||
!E0 U+0430 afii10065
|
||||
!E1 U+0431 afii10066
|
||||
!E2 U+0432 afii10067
|
||||
!E3 U+0433 afii10068
|
||||
!E4 U+0434 afii10069
|
||||
!E5 U+0435 afii10070
|
||||
!E6 U+0436 afii10072
|
||||
!E7 U+0437 afii10073
|
||||
!E8 U+0438 afii10074
|
||||
!E9 U+0439 afii10075
|
||||
!EA U+043A afii10076
|
||||
!EB U+043B afii10077
|
||||
!EC U+043C afii10078
|
||||
!ED U+043D afii10079
|
||||
!EE U+043E afii10080
|
||||
!EF U+043F afii10081
|
||||
!F0 U+0440 afii10082
|
||||
!F1 U+0441 afii10083
|
||||
!F2 U+0442 afii10084
|
||||
!F3 U+0443 afii10085
|
||||
!F4 U+0444 afii10086
|
||||
!F5 U+0445 afii10087
|
||||
!F6 U+0446 afii10088
|
||||
!F7 U+0447 afii10089
|
||||
!F8 U+0448 afii10090
|
||||
!F9 U+0449 afii10091
|
||||
!FA U+044A afii10092
|
||||
!FB U+044B afii10093
|
||||
!FC U+044C afii10094
|
||||
!FD U+044D afii10095
|
||||
!FE U+044E afii10096
|
||||
!FF U+044F afii10097
|
|
@ -1,251 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0160 Scaron
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+0152 OE
|
||||
!8E U+017D Zcaron
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9A U+0161 scaron
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+0153 oe
|
||||
!9E U+017E zcaron
|
||||
!9F U+0178 Ydieresis
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+00D0 Eth
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+00DE Thorn
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+00F0 eth
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+00FE thorn
|
||||
!FF U+00FF ydieresis
|
|
@ -1,239 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0385 dieresistonos
|
||||
!A2 U+0386 Alphatonos
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+2015 afii00208
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+0384 tonos
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+0388 Epsilontonos
|
||||
!B9 U+0389 Etatonos
|
||||
!BA U+038A Iotatonos
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+038C Omicrontonos
|
||||
!BD U+00BD onehalf
|
||||
!BE U+038E Upsilontonos
|
||||
!BF U+038F Omegatonos
|
||||
!C0 U+0390 iotadieresistonos
|
||||
!C1 U+0391 Alpha
|
||||
!C2 U+0392 Beta
|
||||
!C3 U+0393 Gamma
|
||||
!C4 U+0394 Delta
|
||||
!C5 U+0395 Epsilon
|
||||
!C6 U+0396 Zeta
|
||||
!C7 U+0397 Eta
|
||||
!C8 U+0398 Theta
|
||||
!C9 U+0399 Iota
|
||||
!CA U+039A Kappa
|
||||
!CB U+039B Lambda
|
||||
!CC U+039C Mu
|
||||
!CD U+039D Nu
|
||||
!CE U+039E Xi
|
||||
!CF U+039F Omicron
|
||||
!D0 U+03A0 Pi
|
||||
!D1 U+03A1 Rho
|
||||
!D3 U+03A3 Sigma
|
||||
!D4 U+03A4 Tau
|
||||
!D5 U+03A5 Upsilon
|
||||
!D6 U+03A6 Phi
|
||||
!D7 U+03A7 Chi
|
||||
!D8 U+03A8 Psi
|
||||
!D9 U+03A9 Omega
|
||||
!DA U+03AA Iotadieresis
|
||||
!DB U+03AB Upsilondieresis
|
||||
!DC U+03AC alphatonos
|
||||
!DD U+03AD epsilontonos
|
||||
!DE U+03AE etatonos
|
||||
!DF U+03AF iotatonos
|
||||
!E0 U+03B0 upsilondieresistonos
|
||||
!E1 U+03B1 alpha
|
||||
!E2 U+03B2 beta
|
||||
!E3 U+03B3 gamma
|
||||
!E4 U+03B4 delta
|
||||
!E5 U+03B5 epsilon
|
||||
!E6 U+03B6 zeta
|
||||
!E7 U+03B7 eta
|
||||
!E8 U+03B8 theta
|
||||
!E9 U+03B9 iota
|
||||
!EA U+03BA kappa
|
||||
!EB U+03BB lambda
|
||||
!EC U+03BC mu
|
||||
!ED U+03BD nu
|
||||
!EE U+03BE xi
|
||||
!EF U+03BF omicron
|
||||
!F0 U+03C0 pi
|
||||
!F1 U+03C1 rho
|
||||
!F2 U+03C2 sigma1
|
||||
!F3 U+03C3 sigma
|
||||
!F4 U+03C4 tau
|
||||
!F5 U+03C5 upsilon
|
||||
!F6 U+03C6 phi
|
||||
!F7 U+03C7 chi
|
||||
!F8 U+03C8 psi
|
||||
!F9 U+03C9 omega
|
||||
!FA U+03CA iotadieresis
|
||||
!FB U+03CB upsilondieresis
|
||||
!FC U+03CC omicrontonos
|
||||
!FD U+03CD upsilontonos
|
||||
!FE U+03CE omegatonos
|
|
@ -1,249 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8A U+0160 Scaron
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+0152 OE
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9A U+0161 scaron
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+0153 oe
|
||||
!9F U+0178 Ydieresis
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+011E Gbreve
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0130 Idotaccent
|
||||
!DE U+015E Scedilla
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+011F gbreve
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0131 dotlessi
|
||||
!FE U+015F scedilla
|
||||
!FF U+00FF ydieresis
|
|
@ -1,233 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+20AA afii57636
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00D7 multiply
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD sfthyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 middot
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00F7 divide
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+05B0 afii57799
|
||||
!C1 U+05B1 afii57801
|
||||
!C2 U+05B2 afii57800
|
||||
!C3 U+05B3 afii57802
|
||||
!C4 U+05B4 afii57793
|
||||
!C5 U+05B5 afii57794
|
||||
!C6 U+05B6 afii57795
|
||||
!C7 U+05B7 afii57798
|
||||
!C8 U+05B8 afii57797
|
||||
!C9 U+05B9 afii57806
|
||||
!CB U+05BB afii57796
|
||||
!CC U+05BC afii57807
|
||||
!CD U+05BD afii57839
|
||||
!CE U+05BE afii57645
|
||||
!CF U+05BF afii57841
|
||||
!D0 U+05C0 afii57842
|
||||
!D1 U+05C1 afii57804
|
||||
!D2 U+05C2 afii57803
|
||||
!D3 U+05C3 afii57658
|
||||
!D4 U+05F0 afii57716
|
||||
!D5 U+05F1 afii57717
|
||||
!D6 U+05F2 afii57718
|
||||
!D7 U+05F3 gereshhebrew
|
||||
!D8 U+05F4 gershayimhebrew
|
||||
!E0 U+05D0 afii57664
|
||||
!E1 U+05D1 afii57665
|
||||
!E2 U+05D2 afii57666
|
||||
!E3 U+05D3 afii57667
|
||||
!E4 U+05D4 afii57668
|
||||
!E5 U+05D5 afii57669
|
||||
!E6 U+05D6 afii57670
|
||||
!E7 U+05D7 afii57671
|
||||
!E8 U+05D8 afii57672
|
||||
!E9 U+05D9 afii57673
|
||||
!EA U+05DA afii57674
|
||||
!EB U+05DB afii57675
|
||||
!EC U+05DC afii57676
|
||||
!ED U+05DD afii57677
|
||||
!EE U+05DE afii57678
|
||||
!EF U+05DF afii57679
|
||||
!F0 U+05E0 afii57680
|
||||
!F1 U+05E1 afii57681
|
||||
!F2 U+05E2 afii57682
|
||||
!F3 U+05E3 afii57683
|
||||
!F4 U+05E4 afii57684
|
||||
!F5 U+05E5 afii57685
|
||||
!F6 U+05E6 afii57686
|
||||
!F7 U+05E7 afii57687
|
||||
!F8 U+05E8 afii57688
|
||||
!F9 U+05E9 afii57689
|
||||
!FA U+05EA afii57690
|
||||
!FD U+200E afii299
|
||||
!FE U+200F afii300
|
|
@ -1,244 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!8D U+00A8 dieresis
|
||||
!8E U+02C7 caron
|
||||
!8F U+00B8 cedilla
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!9D U+00AF macron
|
||||
!9E U+02DB ogonek
|
||||
!A0 U+00A0 space
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00D8 Oslash
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+0156 Rcommaaccent
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00C6 AE
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00F8 oslash
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+0157 rcommaaccent
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00E6 ae
|
||||
!C0 U+0104 Aogonek
|
||||
!C1 U+012E Iogonek
|
||||
!C2 U+0100 Amacron
|
||||
!C3 U+0106 Cacute
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+0118 Eogonek
|
||||
!C7 U+0112 Emacron
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0179 Zacute
|
||||
!CB U+0116 Edotaccent
|
||||
!CC U+0122 Gcommaaccent
|
||||
!CD U+0136 Kcommaaccent
|
||||
!CE U+012A Imacron
|
||||
!CF U+013B Lcommaaccent
|
||||
!D0 U+0160 Scaron
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+0145 Ncommaaccent
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+014C Omacron
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+0172 Uogonek
|
||||
!D9 U+0141 Lslash
|
||||
!DA U+015A Sacute
|
||||
!DB U+016A Umacron
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+017B Zdotaccent
|
||||
!DE U+017D Zcaron
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0105 aogonek
|
||||
!E1 U+012F iogonek
|
||||
!E2 U+0101 amacron
|
||||
!E3 U+0107 cacute
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+0119 eogonek
|
||||
!E7 U+0113 emacron
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+017A zacute
|
||||
!EB U+0117 edotaccent
|
||||
!EC U+0123 gcommaaccent
|
||||
!ED U+0137 kcommaaccent
|
||||
!EE U+012B imacron
|
||||
!EF U+013C lcommaaccent
|
||||
!F0 U+0161 scaron
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+0146 ncommaaccent
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+014D omacron
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+0173 uogonek
|
||||
!F9 U+0142 lslash
|
||||
!FA U+015B sacute
|
||||
!FB U+016B umacron
|
||||
!FC U+00FC udieresis
|
||||
!FD U+017C zdotaccent
|
||||
!FE U+017E zcaron
|
||||
!FF U+02D9 dotaccent
|
|
@ -1,247 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!82 U+201A quotesinglbase
|
||||
!83 U+0192 florin
|
||||
!84 U+201E quotedblbase
|
||||
!85 U+2026 ellipsis
|
||||
!86 U+2020 dagger
|
||||
!87 U+2021 daggerdbl
|
||||
!88 U+02C6 circumflex
|
||||
!89 U+2030 perthousand
|
||||
!8B U+2039 guilsinglleft
|
||||
!8C U+0152 OE
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!98 U+02DC tilde
|
||||
!99 U+2122 trademark
|
||||
!9B U+203A guilsinglright
|
||||
!9C U+0153 oe
|
||||
!9F U+0178 Ydieresis
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+0300 gravecomb
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+0309 hookabovecomb
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+01A0 Ohorn
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+01AF Uhorn
|
||||
!DE U+0303 tildecomb
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+0301 acutecomb
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+0323 dotbelowcomb
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+01A1 ohorn
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+01B0 uhorn
|
||||
!FE U+20AB dong
|
||||
!FF U+00FF ydieresis
|
|
@ -1,225 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+20AC Euro
|
||||
!85 U+2026 ellipsis
|
||||
!91 U+2018 quoteleft
|
||||
!92 U+2019 quoteright
|
||||
!93 U+201C quotedblleft
|
||||
!94 U+201D quotedblright
|
||||
!95 U+2022 bullet
|
||||
!96 U+2013 endash
|
||||
!97 U+2014 emdash
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0E01 kokaithai
|
||||
!A2 U+0E02 khokhaithai
|
||||
!A3 U+0E03 khokhuatthai
|
||||
!A4 U+0E04 khokhwaithai
|
||||
!A5 U+0E05 khokhonthai
|
||||
!A6 U+0E06 khorakhangthai
|
||||
!A7 U+0E07 ngonguthai
|
||||
!A8 U+0E08 chochanthai
|
||||
!A9 U+0E09 chochingthai
|
||||
!AA U+0E0A chochangthai
|
||||
!AB U+0E0B sosothai
|
||||
!AC U+0E0C chochoethai
|
||||
!AD U+0E0D yoyingthai
|
||||
!AE U+0E0E dochadathai
|
||||
!AF U+0E0F topatakthai
|
||||
!B0 U+0E10 thothanthai
|
||||
!B1 U+0E11 thonangmonthothai
|
||||
!B2 U+0E12 thophuthaothai
|
||||
!B3 U+0E13 nonenthai
|
||||
!B4 U+0E14 dodekthai
|
||||
!B5 U+0E15 totaothai
|
||||
!B6 U+0E16 thothungthai
|
||||
!B7 U+0E17 thothahanthai
|
||||
!B8 U+0E18 thothongthai
|
||||
!B9 U+0E19 nonuthai
|
||||
!BA U+0E1A bobaimaithai
|
||||
!BB U+0E1B poplathai
|
||||
!BC U+0E1C phophungthai
|
||||
!BD U+0E1D fofathai
|
||||
!BE U+0E1E phophanthai
|
||||
!BF U+0E1F fofanthai
|
||||
!C0 U+0E20 phosamphaothai
|
||||
!C1 U+0E21 momathai
|
||||
!C2 U+0E22 yoyakthai
|
||||
!C3 U+0E23 roruathai
|
||||
!C4 U+0E24 ruthai
|
||||
!C5 U+0E25 lolingthai
|
||||
!C6 U+0E26 luthai
|
||||
!C7 U+0E27 wowaenthai
|
||||
!C8 U+0E28 sosalathai
|
||||
!C9 U+0E29 sorusithai
|
||||
!CA U+0E2A sosuathai
|
||||
!CB U+0E2B hohipthai
|
||||
!CC U+0E2C lochulathai
|
||||
!CD U+0E2D oangthai
|
||||
!CE U+0E2E honokhukthai
|
||||
!CF U+0E2F paiyannoithai
|
||||
!D0 U+0E30 saraathai
|
||||
!D1 U+0E31 maihanakatthai
|
||||
!D2 U+0E32 saraaathai
|
||||
!D3 U+0E33 saraamthai
|
||||
!D4 U+0E34 saraithai
|
||||
!D5 U+0E35 saraiithai
|
||||
!D6 U+0E36 sarauethai
|
||||
!D7 U+0E37 saraueethai
|
||||
!D8 U+0E38 sarauthai
|
||||
!D9 U+0E39 sarauuthai
|
||||
!DA U+0E3A phinthuthai
|
||||
!DF U+0E3F bahtthai
|
||||
!E0 U+0E40 saraethai
|
||||
!E1 U+0E41 saraaethai
|
||||
!E2 U+0E42 saraothai
|
||||
!E3 U+0E43 saraaimaimuanthai
|
||||
!E4 U+0E44 saraaimaimalaithai
|
||||
!E5 U+0E45 lakkhangyaothai
|
||||
!E6 U+0E46 maiyamokthai
|
||||
!E7 U+0E47 maitaikhuthai
|
||||
!E8 U+0E48 maiekthai
|
||||
!E9 U+0E49 maithothai
|
||||
!EA U+0E4A maitrithai
|
||||
!EB U+0E4B maichattawathai
|
||||
!EC U+0E4C thanthakhatthai
|
||||
!ED U+0E4D nikhahitthai
|
||||
!EE U+0E4E yamakkanthai
|
||||
!EF U+0E4F fongmanthai
|
||||
!F0 U+0E50 zerothai
|
||||
!F1 U+0E51 onethai
|
||||
!F2 U+0E52 twothai
|
||||
!F3 U+0E53 threethai
|
||||
!F4 U+0E54 fourthai
|
||||
!F5 U+0E55 fivethai
|
||||
!F6 U+0E56 sixthai
|
||||
!F7 U+0E57 seventhai
|
||||
!F8 U+0E58 eightthai
|
||||
!F9 U+0E59 ninethai
|
||||
!FA U+0E5A angkhankhuthai
|
||||
!FB U+0E5B khomutthai
|
|
@ -1,256 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+00BC onequarter
|
||||
!BD U+00BD onehalf
|
||||
!BE U+00BE threequarters
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+00D0 Eth
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+00DE Thorn
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+00F0 eth
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+00FE thorn
|
||||
!FF U+00FF ydieresis
|
|
@ -1,248 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0E01 kokaithai
|
||||
!A2 U+0E02 khokhaithai
|
||||
!A3 U+0E03 khokhuatthai
|
||||
!A4 U+0E04 khokhwaithai
|
||||
!A5 U+0E05 khokhonthai
|
||||
!A6 U+0E06 khorakhangthai
|
||||
!A7 U+0E07 ngonguthai
|
||||
!A8 U+0E08 chochanthai
|
||||
!A9 U+0E09 chochingthai
|
||||
!AA U+0E0A chochangthai
|
||||
!AB U+0E0B sosothai
|
||||
!AC U+0E0C chochoethai
|
||||
!AD U+0E0D yoyingthai
|
||||
!AE U+0E0E dochadathai
|
||||
!AF U+0E0F topatakthai
|
||||
!B0 U+0E10 thothanthai
|
||||
!B1 U+0E11 thonangmonthothai
|
||||
!B2 U+0E12 thophuthaothai
|
||||
!B3 U+0E13 nonenthai
|
||||
!B4 U+0E14 dodekthai
|
||||
!B5 U+0E15 totaothai
|
||||
!B6 U+0E16 thothungthai
|
||||
!B7 U+0E17 thothahanthai
|
||||
!B8 U+0E18 thothongthai
|
||||
!B9 U+0E19 nonuthai
|
||||
!BA U+0E1A bobaimaithai
|
||||
!BB U+0E1B poplathai
|
||||
!BC U+0E1C phophungthai
|
||||
!BD U+0E1D fofathai
|
||||
!BE U+0E1E phophanthai
|
||||
!BF U+0E1F fofanthai
|
||||
!C0 U+0E20 phosamphaothai
|
||||
!C1 U+0E21 momathai
|
||||
!C2 U+0E22 yoyakthai
|
||||
!C3 U+0E23 roruathai
|
||||
!C4 U+0E24 ruthai
|
||||
!C5 U+0E25 lolingthai
|
||||
!C6 U+0E26 luthai
|
||||
!C7 U+0E27 wowaenthai
|
||||
!C8 U+0E28 sosalathai
|
||||
!C9 U+0E29 sorusithai
|
||||
!CA U+0E2A sosuathai
|
||||
!CB U+0E2B hohipthai
|
||||
!CC U+0E2C lochulathai
|
||||
!CD U+0E2D oangthai
|
||||
!CE U+0E2E honokhukthai
|
||||
!CF U+0E2F paiyannoithai
|
||||
!D0 U+0E30 saraathai
|
||||
!D1 U+0E31 maihanakatthai
|
||||
!D2 U+0E32 saraaathai
|
||||
!D3 U+0E33 saraamthai
|
||||
!D4 U+0E34 saraithai
|
||||
!D5 U+0E35 saraiithai
|
||||
!D6 U+0E36 sarauethai
|
||||
!D7 U+0E37 saraueethai
|
||||
!D8 U+0E38 sarauthai
|
||||
!D9 U+0E39 sarauuthai
|
||||
!DA U+0E3A phinthuthai
|
||||
!DF U+0E3F bahtthai
|
||||
!E0 U+0E40 saraethai
|
||||
!E1 U+0E41 saraaethai
|
||||
!E2 U+0E42 saraothai
|
||||
!E3 U+0E43 saraaimaimuanthai
|
||||
!E4 U+0E44 saraaimaimalaithai
|
||||
!E5 U+0E45 lakkhangyaothai
|
||||
!E6 U+0E46 maiyamokthai
|
||||
!E7 U+0E47 maitaikhuthai
|
||||
!E8 U+0E48 maiekthai
|
||||
!E9 U+0E49 maithothai
|
||||
!EA U+0E4A maitrithai
|
||||
!EB U+0E4B maichattawathai
|
||||
!EC U+0E4C thanthakhatthai
|
||||
!ED U+0E4D nikhahitthai
|
||||
!EE U+0E4E yamakkanthai
|
||||
!EF U+0E4F fongmanthai
|
||||
!F0 U+0E50 zerothai
|
||||
!F1 U+0E51 onethai
|
||||
!F2 U+0E52 twothai
|
||||
!F3 U+0E53 threethai
|
||||
!F4 U+0E54 fourthai
|
||||
!F5 U+0E55 fivethai
|
||||
!F6 U+0E56 sixthai
|
||||
!F7 U+0E57 seventhai
|
||||
!F8 U+0E58 eightthai
|
||||
!F9 U+0E59 ninethai
|
||||
!FA U+0E5A angkhankhuthai
|
||||
!FB U+0E5B khomutthai
|
|
@ -1,256 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+00A1 exclamdown
|
||||
!A2 U+00A2 cent
|
||||
!A3 U+00A3 sterling
|
||||
!A4 U+20AC Euro
|
||||
!A5 U+00A5 yen
|
||||
!A6 U+0160 Scaron
|
||||
!A7 U+00A7 section
|
||||
!A8 U+0161 scaron
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+00AA ordfeminine
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AE U+00AE registered
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+017D Zcaron
|
||||
!B5 U+00B5 mu
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+017E zcaron
|
||||
!B9 U+00B9 onesuperior
|
||||
!BA U+00BA ordmasculine
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+0152 OE
|
||||
!BD U+0153 oe
|
||||
!BE U+0178 Ydieresis
|
||||
!BF U+00BF questiondown
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+00D0 Eth
|
||||
!D1 U+00D1 Ntilde
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+00DE Thorn
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+00F0 eth
|
||||
!F1 U+00F1 ntilde
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+00FE thorn
|
||||
!FF U+00FF ydieresis
|
|
@ -1,256 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0104 Aogonek
|
||||
!A2 U+0105 aogonek
|
||||
!A3 U+0141 Lslash
|
||||
!A4 U+20AC Euro
|
||||
!A5 U+201E quotedblbase
|
||||
!A6 U+0160 Scaron
|
||||
!A7 U+00A7 section
|
||||
!A8 U+0161 scaron
|
||||
!A9 U+00A9 copyright
|
||||
!AA U+0218 Scommaaccent
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+0179 Zacute
|
||||
!AD U+00AD hyphen
|
||||
!AE U+017A zacute
|
||||
!AF U+017B Zdotaccent
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+010C Ccaron
|
||||
!B3 U+0142 lslash
|
||||
!B4 U+017D Zcaron
|
||||
!B5 U+201D quotedblright
|
||||
!B6 U+00B6 paragraph
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+017E zcaron
|
||||
!B9 U+010D ccaron
|
||||
!BA U+0219 scommaaccent
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+0152 OE
|
||||
!BD U+0153 oe
|
||||
!BE U+0178 Ydieresis
|
||||
!BF U+017C zdotaccent
|
||||
!C0 U+00C0 Agrave
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+0106 Cacute
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+00C8 Egrave
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+00CA Ecircumflex
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+00CC Igrave
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+00CF Idieresis
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+00D2 Ograve
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+0150 Ohungarumlaut
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+015A Sacute
|
||||
!D8 U+0170 Uhungarumlaut
|
||||
!D9 U+00D9 Ugrave
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0118 Eogonek
|
||||
!DE U+021A Tcommaaccent
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+00E0 agrave
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+0107 cacute
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+00E8 egrave
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+00EA ecircumflex
|
||||
!EB U+00EB edieresis
|
||||
!EC U+00EC igrave
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+00EF idieresis
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+00F2 ograve
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+0151 ohungarumlaut
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+015B sacute
|
||||
!F8 U+0171 uhungarumlaut
|
||||
!F9 U+00F9 ugrave
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0119 eogonek
|
||||
!FE U+021B tcommaaccent
|
||||
!FF U+00FF ydieresis
|
|
@ -1,256 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0104 Aogonek
|
||||
!A2 U+02D8 breve
|
||||
!A3 U+0141 Lslash
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+013D Lcaron
|
||||
!A6 U+015A Sacute
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+0160 Scaron
|
||||
!AA U+015E Scedilla
|
||||
!AB U+0164 Tcaron
|
||||
!AC U+0179 Zacute
|
||||
!AD U+00AD hyphen
|
||||
!AE U+017D Zcaron
|
||||
!AF U+017B Zdotaccent
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+0105 aogonek
|
||||
!B2 U+02DB ogonek
|
||||
!B3 U+0142 lslash
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+013E lcaron
|
||||
!B6 U+015B sacute
|
||||
!B7 U+02C7 caron
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+0161 scaron
|
||||
!BA U+015F scedilla
|
||||
!BB U+0165 tcaron
|
||||
!BC U+017A zacute
|
||||
!BD U+02DD hungarumlaut
|
||||
!BE U+017E zcaron
|
||||
!BF U+017C zdotaccent
|
||||
!C0 U+0154 Racute
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+0102 Abreve
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+0139 Lacute
|
||||
!C6 U+0106 Cacute
|
||||
!C7 U+00C7 Ccedilla
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0118 Eogonek
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+011A Ecaron
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+010E Dcaron
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0143 Nacute
|
||||
!D2 U+0147 Ncaron
|
||||
!D3 U+00D3 Oacute
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+0150 Ohungarumlaut
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+0158 Rcaron
|
||||
!D9 U+016E Uring
|
||||
!DA U+00DA Uacute
|
||||
!DB U+0170 Uhungarumlaut
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+00DD Yacute
|
||||
!DE U+0162 Tcommaaccent
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0155 racute
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+0103 abreve
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+013A lacute
|
||||
!E6 U+0107 cacute
|
||||
!E7 U+00E7 ccedilla
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+0119 eogonek
|
||||
!EB U+00EB edieresis
|
||||
!EC U+011B ecaron
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+010F dcaron
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0144 nacute
|
||||
!F2 U+0148 ncaron
|
||||
!F3 U+00F3 oacute
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+0151 ohungarumlaut
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+0159 rcaron
|
||||
!F9 U+016F uring
|
||||
!FA U+00FA uacute
|
||||
!FB U+0171 uhungarumlaut
|
||||
!FC U+00FC udieresis
|
||||
!FD U+00FD yacute
|
||||
!FE U+0163 tcommaaccent
|
||||
!FF U+02D9 dotaccent
|
|
@ -1,256 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0104 Aogonek
|
||||
!A2 U+0138 kgreenlandic
|
||||
!A3 U+0156 Rcommaaccent
|
||||
!A4 U+00A4 currency
|
||||
!A5 U+0128 Itilde
|
||||
!A6 U+013B Lcommaaccent
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+0160 Scaron
|
||||
!AA U+0112 Emacron
|
||||
!AB U+0122 Gcommaaccent
|
||||
!AC U+0166 Tbar
|
||||
!AD U+00AD hyphen
|
||||
!AE U+017D Zcaron
|
||||
!AF U+00AF macron
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+0105 aogonek
|
||||
!B2 U+02DB ogonek
|
||||
!B3 U+0157 rcommaaccent
|
||||
!B4 U+00B4 acute
|
||||
!B5 U+0129 itilde
|
||||
!B6 U+013C lcommaaccent
|
||||
!B7 U+02C7 caron
|
||||
!B8 U+00B8 cedilla
|
||||
!B9 U+0161 scaron
|
||||
!BA U+0113 emacron
|
||||
!BB U+0123 gcommaaccent
|
||||
!BC U+0167 tbar
|
||||
!BD U+014A Eng
|
||||
!BE U+017E zcaron
|
||||
!BF U+014B eng
|
||||
!C0 U+0100 Amacron
|
||||
!C1 U+00C1 Aacute
|
||||
!C2 U+00C2 Acircumflex
|
||||
!C3 U+00C3 Atilde
|
||||
!C4 U+00C4 Adieresis
|
||||
!C5 U+00C5 Aring
|
||||
!C6 U+00C6 AE
|
||||
!C7 U+012E Iogonek
|
||||
!C8 U+010C Ccaron
|
||||
!C9 U+00C9 Eacute
|
||||
!CA U+0118 Eogonek
|
||||
!CB U+00CB Edieresis
|
||||
!CC U+0116 Edotaccent
|
||||
!CD U+00CD Iacute
|
||||
!CE U+00CE Icircumflex
|
||||
!CF U+012A Imacron
|
||||
!D0 U+0110 Dcroat
|
||||
!D1 U+0145 Ncommaaccent
|
||||
!D2 U+014C Omacron
|
||||
!D3 U+0136 Kcommaaccent
|
||||
!D4 U+00D4 Ocircumflex
|
||||
!D5 U+00D5 Otilde
|
||||
!D6 U+00D6 Odieresis
|
||||
!D7 U+00D7 multiply
|
||||
!D8 U+00D8 Oslash
|
||||
!D9 U+0172 Uogonek
|
||||
!DA U+00DA Uacute
|
||||
!DB U+00DB Ucircumflex
|
||||
!DC U+00DC Udieresis
|
||||
!DD U+0168 Utilde
|
||||
!DE U+016A Umacron
|
||||
!DF U+00DF germandbls
|
||||
!E0 U+0101 amacron
|
||||
!E1 U+00E1 aacute
|
||||
!E2 U+00E2 acircumflex
|
||||
!E3 U+00E3 atilde
|
||||
!E4 U+00E4 adieresis
|
||||
!E5 U+00E5 aring
|
||||
!E6 U+00E6 ae
|
||||
!E7 U+012F iogonek
|
||||
!E8 U+010D ccaron
|
||||
!E9 U+00E9 eacute
|
||||
!EA U+0119 eogonek
|
||||
!EB U+00EB edieresis
|
||||
!EC U+0117 edotaccent
|
||||
!ED U+00ED iacute
|
||||
!EE U+00EE icircumflex
|
||||
!EF U+012B imacron
|
||||
!F0 U+0111 dcroat
|
||||
!F1 U+0146 ncommaaccent
|
||||
!F2 U+014D omacron
|
||||
!F3 U+0137 kcommaaccent
|
||||
!F4 U+00F4 ocircumflex
|
||||
!F5 U+00F5 otilde
|
||||
!F6 U+00F6 odieresis
|
||||
!F7 U+00F7 divide
|
||||
!F8 U+00F8 oslash
|
||||
!F9 U+0173 uogonek
|
||||
!FA U+00FA uacute
|
||||
!FB U+00FB ucircumflex
|
||||
!FC U+00FC udieresis
|
||||
!FD U+0169 utilde
|
||||
!FE U+016B umacron
|
||||
!FF U+02D9 dotaccent
|
|
@ -1,256 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+0401 afii10023
|
||||
!A2 U+0402 afii10051
|
||||
!A3 U+0403 afii10052
|
||||
!A4 U+0404 afii10053
|
||||
!A5 U+0405 afii10054
|
||||
!A6 U+0406 afii10055
|
||||
!A7 U+0407 afii10056
|
||||
!A8 U+0408 afii10057
|
||||
!A9 U+0409 afii10058
|
||||
!AA U+040A afii10059
|
||||
!AB U+040B afii10060
|
||||
!AC U+040C afii10061
|
||||
!AD U+00AD hyphen
|
||||
!AE U+040E afii10062
|
||||
!AF U+040F afii10145
|
||||
!B0 U+0410 afii10017
|
||||
!B1 U+0411 afii10018
|
||||
!B2 U+0412 afii10019
|
||||
!B3 U+0413 afii10020
|
||||
!B4 U+0414 afii10021
|
||||
!B5 U+0415 afii10022
|
||||
!B6 U+0416 afii10024
|
||||
!B7 U+0417 afii10025
|
||||
!B8 U+0418 afii10026
|
||||
!B9 U+0419 afii10027
|
||||
!BA U+041A afii10028
|
||||
!BB U+041B afii10029
|
||||
!BC U+041C afii10030
|
||||
!BD U+041D afii10031
|
||||
!BE U+041E afii10032
|
||||
!BF U+041F afii10033
|
||||
!C0 U+0420 afii10034
|
||||
!C1 U+0421 afii10035
|
||||
!C2 U+0422 afii10036
|
||||
!C3 U+0423 afii10037
|
||||
!C4 U+0424 afii10038
|
||||
!C5 U+0425 afii10039
|
||||
!C6 U+0426 afii10040
|
||||
!C7 U+0427 afii10041
|
||||
!C8 U+0428 afii10042
|
||||
!C9 U+0429 afii10043
|
||||
!CA U+042A afii10044
|
||||
!CB U+042B afii10045
|
||||
!CC U+042C afii10046
|
||||
!CD U+042D afii10047
|
||||
!CE U+042E afii10048
|
||||
!CF U+042F afii10049
|
||||
!D0 U+0430 afii10065
|
||||
!D1 U+0431 afii10066
|
||||
!D2 U+0432 afii10067
|
||||
!D3 U+0433 afii10068
|
||||
!D4 U+0434 afii10069
|
||||
!D5 U+0435 afii10070
|
||||
!D6 U+0436 afii10072
|
||||
!D7 U+0437 afii10073
|
||||
!D8 U+0438 afii10074
|
||||
!D9 U+0439 afii10075
|
||||
!DA U+043A afii10076
|
||||
!DB U+043B afii10077
|
||||
!DC U+043C afii10078
|
||||
!DD U+043D afii10079
|
||||
!DE U+043E afii10080
|
||||
!DF U+043F afii10081
|
||||
!E0 U+0440 afii10082
|
||||
!E1 U+0441 afii10083
|
||||
!E2 U+0442 afii10084
|
||||
!E3 U+0443 afii10085
|
||||
!E4 U+0444 afii10086
|
||||
!E5 U+0445 afii10087
|
||||
!E6 U+0446 afii10088
|
||||
!E7 U+0447 afii10089
|
||||
!E8 U+0448 afii10090
|
||||
!E9 U+0449 afii10091
|
||||
!EA U+044A afii10092
|
||||
!EB U+044B afii10093
|
||||
!EC U+044C afii10094
|
||||
!ED U+044D afii10095
|
||||
!EE U+044E afii10096
|
||||
!EF U+044F afii10097
|
||||
!F0 U+2116 afii61352
|
||||
!F1 U+0451 afii10071
|
||||
!F2 U+0452 afii10099
|
||||
!F3 U+0453 afii10100
|
||||
!F4 U+0454 afii10101
|
||||
!F5 U+0455 afii10102
|
||||
!F6 U+0456 afii10103
|
||||
!F7 U+0457 afii10104
|
||||
!F8 U+0458 afii10105
|
||||
!F9 U+0459 afii10106
|
||||
!FA U+045A afii10107
|
||||
!FB U+045B afii10108
|
||||
!FC U+045C afii10109
|
||||
!FD U+00A7 section
|
||||
!FE U+045E afii10110
|
||||
!FF U+045F afii10193
|
|
@ -1,250 +0,0 @@
|
|||
!00 U+0000 .notdef
|
||||
!01 U+0001 .notdef
|
||||
!02 U+0002 .notdef
|
||||
!03 U+0003 .notdef
|
||||
!04 U+0004 .notdef
|
||||
!05 U+0005 .notdef
|
||||
!06 U+0006 .notdef
|
||||
!07 U+0007 .notdef
|
||||
!08 U+0008 .notdef
|
||||
!09 U+0009 .notdef
|
||||
!0A U+000A .notdef
|
||||
!0B U+000B .notdef
|
||||
!0C U+000C .notdef
|
||||
!0D U+000D .notdef
|
||||
!0E U+000E .notdef
|
||||
!0F U+000F .notdef
|
||||
!10 U+0010 .notdef
|
||||
!11 U+0011 .notdef
|
||||
!12 U+0012 .notdef
|
||||
!13 U+0013 .notdef
|
||||
!14 U+0014 .notdef
|
||||
!15 U+0015 .notdef
|
||||
!16 U+0016 .notdef
|
||||
!17 U+0017 .notdef
|
||||
!18 U+0018 .notdef
|
||||
!19 U+0019 .notdef
|
||||
!1A U+001A .notdef
|
||||
!1B U+001B .notdef
|
||||
!1C U+001C .notdef
|
||||
!1D U+001D .notdef
|
||||
!1E U+001E .notdef
|
||||
!1F U+001F .notdef
|
||||
!20 U+0020 space
|
||||
!21 U+0021 exclam
|
||||
!22 U+0022 quotedbl
|
||||
!23 U+0023 numbersign
|
||||
!24 U+0024 dollar
|
||||
!25 U+0025 percent
|
||||
!26 U+0026 ampersand
|
||||
!27 U+0027 quotesingle
|
||||
!28 U+0028 parenleft
|
||||
!29 U+0029 parenright
|
||||
!2A U+002A asterisk
|
||||
!2B U+002B plus
|
||||
!2C U+002C comma
|
||||
!2D U+002D hyphen
|
||||
!2E U+002E period
|
||||
!2F U+002F slash
|
||||
!30 U+0030 zero
|
||||
!31 U+0031 one
|
||||
!32 U+0032 two
|
||||
!33 U+0033 three
|
||||
!34 U+0034 four
|
||||
!35 U+0035 five
|
||||
!36 U+0036 six
|
||||
!37 U+0037 seven
|
||||
!38 U+0038 eight
|
||||
!39 U+0039 nine
|
||||
!3A U+003A colon
|
||||
!3B U+003B semicolon
|
||||
!3C U+003C less
|
||||
!3D U+003D equal
|
||||
!3E U+003E greater
|
||||
!3F U+003F question
|
||||
!40 U+0040 at
|
||||
!41 U+0041 A
|
||||
!42 U+0042 B
|
||||
!43 U+0043 C
|
||||
!44 U+0044 D
|
||||
!45 U+0045 E
|
||||
!46 U+0046 F
|
||||
!47 U+0047 G
|
||||
!48 U+0048 H
|
||||
!49 U+0049 I
|
||||
!4A U+004A J
|
||||
!4B U+004B K
|
||||
!4C U+004C L
|
||||
!4D U+004D M
|
||||
!4E U+004E N
|
||||
!4F U+004F O
|
||||
!50 U+0050 P
|
||||
!51 U+0051 Q
|
||||
!52 U+0052 R
|
||||
!53 U+0053 S
|
||||
!54 U+0054 T
|
||||
!55 U+0055 U
|
||||
!56 U+0056 V
|
||||
!57 U+0057 W
|
||||
!58 U+0058 X
|
||||
!59 U+0059 Y
|
||||
!5A U+005A Z
|
||||
!5B U+005B bracketleft
|
||||
!5C U+005C backslash
|
||||
!5D U+005D bracketright
|
||||
!5E U+005E asciicircum
|
||||
!5F U+005F underscore
|
||||
!60 U+0060 grave
|
||||
!61 U+0061 a
|
||||
!62 U+0062 b
|
||||
!63 U+0063 c
|
||||
!64 U+0064 d
|
||||
!65 U+0065 e
|
||||
!66 U+0066 f
|
||||
!67 U+0067 g
|
||||
!68 U+0068 h
|
||||
!69 U+0069 i
|
||||
!6A U+006A j
|
||||
!6B U+006B k
|
||||
!6C U+006C l
|
||||
!6D U+006D m
|
||||
!6E U+006E n
|
||||
!6F U+006F o
|
||||
!70 U+0070 p
|
||||
!71 U+0071 q
|
||||
!72 U+0072 r
|
||||
!73 U+0073 s
|
||||
!74 U+0074 t
|
||||
!75 U+0075 u
|
||||
!76 U+0076 v
|
||||
!77 U+0077 w
|
||||
!78 U+0078 x
|
||||
!79 U+0079 y
|
||||
!7A U+007A z
|
||||
!7B U+007B braceleft
|
||||
!7C U+007C bar
|
||||
!7D U+007D braceright
|
||||
!7E U+007E asciitilde
|
||||
!7F U+007F .notdef
|
||||
!80 U+0080 .notdef
|
||||
!81 U+0081 .notdef
|
||||
!82 U+0082 .notdef
|
||||
!83 U+0083 .notdef
|
||||
!84 U+0084 .notdef
|
||||
!85 U+0085 .notdef
|
||||
!86 U+0086 .notdef
|
||||
!87 U+0087 .notdef
|
||||
!88 U+0088 .notdef
|
||||
!89 U+0089 .notdef
|
||||
!8A U+008A .notdef
|
||||
!8B U+008B .notdef
|
||||
!8C U+008C .notdef
|
||||
!8D U+008D .notdef
|
||||
!8E U+008E .notdef
|
||||
!8F U+008F .notdef
|
||||
!90 U+0090 .notdef
|
||||
!91 U+0091 .notdef
|
||||
!92 U+0092 .notdef
|
||||
!93 U+0093 .notdef
|
||||
!94 U+0094 .notdef
|
||||
!95 U+0095 .notdef
|
||||
!96 U+0096 .notdef
|
||||
!97 U+0097 .notdef
|
||||
!98 U+0098 .notdef
|
||||
!99 U+0099 .notdef
|
||||
!9A U+009A .notdef
|
||||
!9B U+009B .notdef
|
||||
!9C U+009C .notdef
|
||||
!9D U+009D .notdef
|
||||
!9E U+009E .notdef
|
||||
!9F U+009F .notdef
|
||||
!A0 U+00A0 space
|
||||
!A1 U+2018 quoteleft
|
||||
!A2 U+2019 quoteright
|
||||
!A3 U+00A3 sterling
|
||||
!A6 U+00A6 brokenbar
|
||||
!A7 U+00A7 section
|
||||
!A8 U+00A8 dieresis
|
||||
!A9 U+00A9 copyright
|
||||
!AB U+00AB guillemotleft
|
||||
!AC U+00AC logicalnot
|
||||
!AD U+00AD hyphen
|
||||
!AF U+2015 afii00208
|
||||
!B0 U+00B0 degree
|
||||
!B1 U+00B1 plusminus
|
||||
!B2 U+00B2 twosuperior
|
||||
!B3 U+00B3 threesuperior
|
||||
!B4 U+0384 tonos
|
||||
!B5 U+0385 dieresistonos
|
||||
!B6 U+0386 Alphatonos
|
||||
!B7 U+00B7 periodcentered
|
||||
!B8 U+0388 Epsilontonos
|
||||
!B9 U+0389 Etatonos
|
||||
!BA U+038A Iotatonos
|
||||
!BB U+00BB guillemotright
|
||||
!BC U+038C Omicrontonos
|
||||
!BD U+00BD onehalf
|
||||
!BE U+038E Upsilontonos
|
||||
!BF U+038F Omegatonos
|
||||
!C0 U+0390 iotadieresistonos
|
||||
!C1 U+0391 Alpha
|
||||
!C2 U+0392 Beta
|
||||
!C3 U+0393 Gamma
|
||||
!C4 U+0394 Delta
|
||||
!C5 U+0395 Epsilon
|
||||
!C6 U+0396 Zeta
|
||||
!C7 U+0397 Eta
|
||||
!C8 U+0398 Theta
|
||||
!C9 U+0399 Iota
|
||||
!CA U+039A Kappa
|
||||
!CB U+039B Lambda
|
||||
!CC U+039C Mu
|
||||
!CD U+039D Nu
|
||||
!CE U+039E Xi
|
||||
!CF U+039F Omicron
|
||||
!D0 U+03A0 Pi
|
||||
!D1 U+03A1 Rho
|
||||
!D3 U+03A3 Sigma
|
||||
!D4 U+03A4 Tau
|
||||
!D5 U+03A5 Upsilon
|
||||
!D6 U+03A6 Phi
|
||||
!D7 U+03A7 Chi
|
||||
!D8 U+03A8 Psi
|
||||
!D9 U+03A9 Omega
|
||||
!DA U+03AA Iotadieresis
|
||||
!DB U+03AB Upsilondieresis
|
||||
!DC U+03AC alphatonos
|
||||
!DD U+03AD epsilontonos
|
||||
!DE U+03AE etatonos
|
||||
!DF U+03AF iotatonos
|
||||
!E0 U+03B0 upsilondieresistonos
|
||||
!E1 U+03B1 alpha
|
||||
!E2 U+03B2 beta
|
||||
!E3 U+03B3 gamma
|
||||
!E4 U+03B4 delta
|
||||
!E5 U+03B5 epsilon
|
||||
!E6 U+03B6 zeta
|
||||
!E7 U+03B7 eta
|
||||
!E8 U+03B8 theta
|
||||
!E9 U+03B9 iota
|
||||
!EA U+03BA kappa
|
||||
!EB U+03BB lambda
|
||||
!EC U+03BC mu
|
||||
!ED U+03BD nu
|
||||
!EE U+03BE xi
|
||||
!EF U+03BF omicron
|
||||
!F0 U+03C0 pi
|
||||
!F1 U+03C1 rho
|
||||
!F2 U+03C2 sigma1
|
||||
!F3 U+03C3 sigma
|
||||
!F4 U+03C4 tau
|
||||
!F5 U+03C5 upsilon
|
||||
!F6 U+03C6 phi
|
||||
!F7 U+03C7 chi
|
||||
!F8 U+03C8 psi
|
||||
!F9 U+03C9 omega
|
||||
!FA U+03CA iotadieresis
|
||||
!FB U+03CB upsilondieresis
|
||||
!FC U+03CC omicrontonos
|
||||
!FD U+03CD upsilontonos
|
||||
!FE U+03CE omegatonos
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue