Property changes on: trunk/phase3/maintenance/dev/includes/php.sh |
___________________________________________________________________ |
Added: svn:eol-style |
1 | 1 | + native |
Property changes on: trunk/phase3/maintenance/dev/includes/require-php.sh |
___________________________________________________________________ |
Added: svn:eol-style |
2 | 2 | + native |
Property changes on: trunk/phase3/resources/mediawiki/mediawiki.jqueryMsg.peg |
___________________________________________________________________ |
Added: svn:eol-style |
3 | 3 | + native |
Property changes on: trunk/extensions/NoBogusUserpages/NoBogusUserpages.i18n.php |
___________________________________________________________________ |
Added: svn:eol-style |
4 | 4 | + native |
Property changes on: trunk/extensions/NoBogusUserpages/NoBogusUserpages.php |
___________________________________________________________________ |
Added: svn:eol-style |
5 | 5 | + native |
Index: trunk/extensions/WikiObjectModel/includes/parsers/WOMPropertyValueParser.php |
— | — | @@ -1,36 +1,36 @@ |
2 | | -<?php
|
3 | | -/**
|
4 | | - * @author Ning
|
5 | | - *
|
6 | | - * @file
|
7 | | - * @ingroup WikiObjectModels
|
8 | | - */
|
9 | | -
|
10 | | -class WOMPropertyValueParser extends WikiObjectModelParser {
|
11 | | -
|
12 | | - public function __construct() {
|
13 | | - parent::__construct();
|
14 | | - $this->m_parserId = WOM_PARSER_ID_PROPERTY_VALUE;
|
15 | | - }
|
16 | | -
|
17 | | - public function parseNext( $text, WikiObjectModelCollection $parentObj, $offset = 0 ) {
|
18 | | - if ( !( $parentObj instanceof WOMNestPropertyModel ) )
|
19 | | - return null;
|
20 | | -
|
21 | | - return array( 'len' => 0, 'obj' => new WOMNestPropertyValueModel() );
|
22 | | - }
|
23 | | -
|
24 | | - public function isObjectClosed( $obj, $text, $offset ) {
|
25 | | - if ( !( $obj instanceof WOMNestPropertyValueModel ) )
|
26 | | - return false;
|
27 | | -
|
28 | | - if ( ( strlen( $text ) >= $offset + 1 ) && $text { $offset } == '|' ) {
|
29 | | - return 1;
|
30 | | - }
|
31 | | - $parentClose = WOMProcessor::getObjectParser( $obj->getParent() )
|
32 | | - ->isObjectClosed( $obj->getParent(), $text, $offset );
|
33 | | - if ( $parentClose !== false ) return 0;
|
34 | | -
|
35 | | - return false;
|
36 | | - }
|
37 | | -}
|
| 2 | +<?php |
| 3 | +/** |
| 4 | + * @author Ning |
| 5 | + * |
| 6 | + * @file |
| 7 | + * @ingroup WikiObjectModels |
| 8 | + */ |
| 9 | + |
| 10 | +class WOMPropertyValueParser extends WikiObjectModelParser { |
| 11 | + |
| 12 | + public function __construct() { |
| 13 | + parent::__construct(); |
| 14 | + $this->m_parserId = WOM_PARSER_ID_PROPERTY_VALUE; |
| 15 | + } |
| 16 | + |
| 17 | + public function parseNext( $text, WikiObjectModelCollection $parentObj, $offset = 0 ) { |
| 18 | + if ( !( $parentObj instanceof WOMNestPropertyModel ) ) |
| 19 | + return null; |
| 20 | + |
| 21 | + return array( 'len' => 0, 'obj' => new WOMNestPropertyValueModel() ); |
| 22 | + } |
| 23 | + |
| 24 | + public function isObjectClosed( $obj, $text, $offset ) { |
| 25 | + if ( !( $obj instanceof WOMNestPropertyValueModel ) ) |
| 26 | + return false; |
| 27 | + |
| 28 | + if ( ( strlen( $text ) >= $offset + 1 ) && $text { $offset } == '|' ) { |
| 29 | + return 1; |
| 30 | + } |
| 31 | + $parentClose = WOMProcessor::getObjectParser( $obj->getParent() ) |
| 32 | + ->isObjectClosed( $obj->getParent(), $text, $offset ); |
| 33 | + if ( $parentClose !== false ) return 0; |
| 34 | + |
| 35 | + return false; |
| 36 | + } |
| 37 | +} |
Property changes on: trunk/extensions/WikiObjectModel/includes/parsers/WOMPropertyValueParser.php |
___________________________________________________________________ |
Added: svn:eol-style |
38 | 38 | + native |
Index: trunk/extensions/WikiObjectModel/includes/models/WOM_OM_NestProperty.php |
— | — | @@ -1,66 +1,66 @@ |
2 | | -<?php
|
3 | | -/**
|
4 | | - * This model implements Property models.
|
5 | | - *
|
6 | | - * @author Ning
|
7 | | - * @file
|
8 | | - * @ingroup WikiObjectModels
|
9 | | - *
|
10 | | - */
|
11 | | -
|
12 | | -class WOMNestPropertyModel extends WikiObjectModelCollection {
|
13 | | - protected $m_property; // name
|
14 | | - protected $m_user_property; // name
|
15 | | -
|
16 | | - public function __construct( $property ) {
|
17 | | - parent::__construct( WOM_TYPE_NESTPROPERTY );
|
18 | | -
|
19 | | - if ( !defined( 'SMW_VERSION' ) ) {
|
20 | | - // MW hook will catch this exception
|
21 | | - throw new MWException( __METHOD__ . ": Property model is invalid. Please install 'SemanticMediaWiki extension' first." );
|
22 | | - }
|
23 | | -
|
24 | | - $user_property = SMWPropertyValue::makeUserProperty( $property );
|
25 | | - if ( count ( $user_property->getErrors() ) > 0 ) {
|
26 | | - $user_property = SMWPropertyValue::makeUserProperty( '///NA///' );
|
27 | | - } else {
|
28 | | - $property = '';
|
29 | | - }
|
30 | | -
|
31 | | - $this->m_user_property = $user_property;
|
32 | | - $this->m_property = $property;
|
33 | | - }
|
34 | | -
|
35 | | - public function getProperty() {
|
36 | | - return $this->m_user_property;
|
37 | | - }
|
38 | | -
|
39 | | - public function setProperty( $property ) {
|
40 | | - $this->m_user_property = $property;
|
41 | | - }
|
42 | | -
|
43 | | - public function getPropertyName() {
|
44 | | - return ( $this->m_property ) ? $this->m_property : $this->m_user_property->getWikiValue();
|
45 | | - }
|
46 | | -
|
47 | | - public function getWikiText() {
|
48 | | - return "[[{$this->getPropertyName()}::{$this->getValueText()}]]";
|
49 | | - }
|
50 | | -
|
51 | | - public function getValueText() {
|
52 | | - return parent::getWikiText();
|
53 | | - }
|
54 | | -
|
55 | | - public function setXMLAttribute( $key, $value ) {
|
56 | | - if ( $value == '' ) throw new MWException( __METHOD__ . ": value cannot be empty" );
|
57 | | -
|
58 | | - if ( $key == 'name' ) {
|
59 | | - $property = SMWPropertyValue::makeUserProperty( $value );
|
60 | | - } else {
|
61 | | - throw new MWException( __METHOD__ . ": invalid key/value pair: name=property_name" );
|
62 | | - }
|
63 | | - }
|
64 | | - protected function getXMLAttributes() {
|
65 | | - return 'name="' . self::xml_entities( $this->getPropertyName() ) . '"';
|
66 | | - }
|
67 | | -}
|
| 2 | +<?php |
| 3 | +/** |
| 4 | + * This model implements Property models. |
| 5 | + * |
| 6 | + * @author Ning |
| 7 | + * @file |
| 8 | + * @ingroup WikiObjectModels |
| 9 | + * |
| 10 | + */ |
| 11 | + |
| 12 | +class WOMNestPropertyModel extends WikiObjectModelCollection { |
| 13 | + protected $m_property; // name |
| 14 | + protected $m_user_property; // name |
| 15 | + |
| 16 | + public function __construct( $property ) { |
| 17 | + parent::__construct( WOM_TYPE_NESTPROPERTY ); |
| 18 | + |
| 19 | + if ( !defined( 'SMW_VERSION' ) ) { |
| 20 | + // MW hook will catch this exception |
| 21 | + throw new MWException( __METHOD__ . ": Property model is invalid. Please install 'SemanticMediaWiki extension' first." ); |
| 22 | + } |
| 23 | + |
| 24 | + $user_property = SMWPropertyValue::makeUserProperty( $property ); |
| 25 | + if ( count ( $user_property->getErrors() ) > 0 ) { |
| 26 | + $user_property = SMWPropertyValue::makeUserProperty( '///NA///' ); |
| 27 | + } else { |
| 28 | + $property = ''; |
| 29 | + } |
| 30 | + |
| 31 | + $this->m_user_property = $user_property; |
| 32 | + $this->m_property = $property; |
| 33 | + } |
| 34 | + |
| 35 | + public function getProperty() { |
| 36 | + return $this->m_user_property; |
| 37 | + } |
| 38 | + |
| 39 | + public function setProperty( $property ) { |
| 40 | + $this->m_user_property = $property; |
| 41 | + } |
| 42 | + |
| 43 | + public function getPropertyName() { |
| 44 | + return ( $this->m_property ) ? $this->m_property : $this->m_user_property->getWikiValue(); |
| 45 | + } |
| 46 | + |
| 47 | + public function getWikiText() { |
| 48 | + return "[[{$this->getPropertyName()}::{$this->getValueText()}]]"; |
| 49 | + } |
| 50 | + |
| 51 | + public function getValueText() { |
| 52 | + return parent::getWikiText(); |
| 53 | + } |
| 54 | + |
| 55 | + public function setXMLAttribute( $key, $value ) { |
| 56 | + if ( $value == '' ) throw new MWException( __METHOD__ . ": value cannot be empty" ); |
| 57 | + |
| 58 | + if ( $key == 'name' ) { |
| 59 | + $property = SMWPropertyValue::makeUserProperty( $value ); |
| 60 | + } else { |
| 61 | + throw new MWException( __METHOD__ . ": invalid key/value pair: name=property_name" ); |
| 62 | + } |
| 63 | + } |
| 64 | + protected function getXMLAttributes() { |
| 65 | + return 'name="' . self::xml_entities( $this->getPropertyName() ) . '"'; |
| 66 | + } |
| 67 | +} |
Property changes on: trunk/extensions/WikiObjectModel/includes/models/WOM_OM_NestProperty.php |
___________________________________________________________________ |
Added: svn:eol-style |
68 | 68 | + native |
Index: trunk/extensions/WikiObjectModel/includes/models/WOM_OM_Querystring.php |
— | — | @@ -1,29 +1,29 @@ |
2 | | -<?php
|
3 | | -/**
|
4 | | - * This model implements key value models.
|
5 | | - *
|
6 | | - * @author Ning
|
7 | | - * @file
|
8 | | - * @ingroup WikiObjectModels
|
9 | | - *
|
10 | | - */
|
11 | | -
|
12 | | -class WOMQuerystringModel extends WikiObjectModelCollection {
|
13 | | -
|
14 | | - public function __construct() {
|
15 | | - parent::__construct( WOM_TYPE_QUERYSTRING );
|
16 | | - }
|
17 | | -
|
18 | | - public function setXMLAttribute( $key, $value ) {
|
19 | | - throw new MWException( __METHOD__ . ": no key/value pair required" );
|
20 | | - }
|
21 | | -
|
22 | | - public function getWikiText() {
|
23 | | - return $this->getValueText() .
|
24 | | - '|';
|
25 | | - }
|
26 | | -
|
27 | | - public function getValueText() {
|
28 | | - return parent::getWikiText();
|
29 | | - }
|
30 | | -}
|
| 2 | +<?php |
| 3 | +/** |
| 4 | + * This model implements key value models. |
| 5 | + * |
| 6 | + * @author Ning |
| 7 | + * @file |
| 8 | + * @ingroup WikiObjectModels |
| 9 | + * |
| 10 | + */ |
| 11 | + |
| 12 | +class WOMQuerystringModel extends WikiObjectModelCollection { |
| 13 | + |
| 14 | + public function __construct() { |
| 15 | + parent::__construct( WOM_TYPE_QUERYSTRING ); |
| 16 | + } |
| 17 | + |
| 18 | + public function setXMLAttribute( $key, $value ) { |
| 19 | + throw new MWException( __METHOD__ . ": no key/value pair required" ); |
| 20 | + } |
| 21 | + |
| 22 | + public function getWikiText() { |
| 23 | + return $this->getValueText() . |
| 24 | + '|'; |
| 25 | + } |
| 26 | + |
| 27 | + public function getValueText() { |
| 28 | + return parent::getWikiText(); |
| 29 | + } |
| 30 | +} |
Property changes on: trunk/extensions/WikiObjectModel/includes/models/WOM_OM_Querystring.php |
___________________________________________________________________ |
Added: svn:eol-style |
31 | 31 | + native |
Index: trunk/extensions/WikiObjectModel/includes/models/WOM_OM_QueryPrintout.php |
— | — | @@ -1,62 +1,62 @@ |
2 | | -<?php
|
3 | | -/**
|
4 | | - * This model implements query printout models.
|
5 | | - *
|
6 | | - * @author Ning
|
7 | | - * @file
|
8 | | - * @ingroup WikiObjectModels
|
9 | | - *
|
10 | | - */
|
11 | | -
|
12 | | -class WOMQueryPrintoutModel extends WikiObjectModel {
|
13 | | - protected $m_property;
|
14 | | - protected $m_label;
|
15 | | - protected $m_aggregation;
|
16 | | -
|
17 | | - public function __construct( $property, $label = '', $aggregation = '' ) {
|
18 | | - parent::__construct( WOM_TYPE_QUERYPRINTOUT );
|
19 | | - $this->m_property = $property;
|
20 | | - $this->m_label = $label;
|
21 | | -
|
22 | | - $this->m_aggregation = ( defined( 'SMW_AGGREGATION_VERSION' ) ? $aggregation : '' );
|
23 | | - }
|
24 | | -
|
25 | | - public function getProperty() {
|
26 | | - return $this->m_property;
|
27 | | - }
|
28 | | -
|
29 | | - public function getLabel() {
|
30 | | - return $this->m_label;
|
31 | | - }
|
32 | | -
|
33 | | - public function getAggregation() {
|
34 | | - return $this->m_aggregation;
|
35 | | - }
|
36 | | -
|
37 | | - public function getWikiText() {
|
38 | | - return '?' . $this->m_property .
|
39 | | - ( $this->m_aggregation == '' ? "" : ( '>' . $this->m_aggregation ) ) .
|
40 | | - ( $this->m_label == '' ? "" : ( '=' . $this->m_label ) ) . '|';
|
41 | | - }
|
42 | | -
|
43 | | - public function setXMLAttribute( $key, $value ) {
|
44 | | - if ( $value == '' ) throw new MWException( __METHOD__ . ": value cannot be empty" );
|
45 | | -
|
46 | | - if ( $key == 'property' ) {
|
47 | | - $this->m_property = $value;
|
48 | | - } elseif ( $key == 'label' ) {
|
49 | | - $this->m_label = $value;
|
50 | | - } elseif ( defined( 'SMW_AGGREGATION_VERSION' ) && $key == 'aggregation' ) {
|
51 | | - $this->m_aggregation = $value;
|
52 | | - } else {
|
53 | | - throw new MWException( __METHOD__ . ": invalid key/value pair: property=property name, label=query label" .
|
54 | | - ( defined( 'SMW_AGGREGATION_VERSION' ) ? ", aggregation=agg_type" : "" ) );
|
55 | | - }
|
56 | | - }
|
57 | | -
|
58 | | - protected function getXMLAttributes() {
|
59 | | - return 'property="' . self::xml_entities( $this->m_property ) . '"' .
|
60 | | - ( $this->m_aggregation == '' ? "" : ( ' aggregation="' . self::xml_entities( $this->m_aggregation ) . '"' ) ) .
|
61 | | - ( $this->m_label == '' ? "" : ( ' label="' . self::xml_entities( $this->m_label ) . '"' ) );
|
62 | | - }
|
63 | | -}
|
| 2 | +<?php |
| 3 | +/** |
| 4 | + * This model implements query printout models. |
| 5 | + * |
| 6 | + * @author Ning |
| 7 | + * @file |
| 8 | + * @ingroup WikiObjectModels |
| 9 | + * |
| 10 | + */ |
| 11 | + |
| 12 | +class WOMQueryPrintoutModel extends WikiObjectModel { |
| 13 | + protected $m_property; |
| 14 | + protected $m_label; |
| 15 | + protected $m_aggregation; |
| 16 | + |
| 17 | + public function __construct( $property, $label = '', $aggregation = '' ) { |
| 18 | + parent::__construct( WOM_TYPE_QUERYPRINTOUT ); |
| 19 | + $this->m_property = $property; |
| 20 | + $this->m_label = $label; |
| 21 | + |
| 22 | + $this->m_aggregation = ( defined( 'SMW_AGGREGATION_VERSION' ) ? $aggregation : '' ); |
| 23 | + } |
| 24 | + |
| 25 | + public function getProperty() { |
| 26 | + return $this->m_property; |
| 27 | + } |
| 28 | + |
| 29 | + public function getLabel() { |
| 30 | + return $this->m_label; |
| 31 | + } |
| 32 | + |
| 33 | + public function getAggregation() { |
| 34 | + return $this->m_aggregation; |
| 35 | + } |
| 36 | + |
| 37 | + public function getWikiText() { |
| 38 | + return '?' . $this->m_property . |
| 39 | + ( $this->m_aggregation == '' ? "" : ( '>' . $this->m_aggregation ) ) . |
| 40 | + ( $this->m_label == '' ? "" : ( '=' . $this->m_label ) ) . '|'; |
| 41 | + } |
| 42 | + |
| 43 | + public function setXMLAttribute( $key, $value ) { |
| 44 | + if ( $value == '' ) throw new MWException( __METHOD__ . ": value cannot be empty" ); |
| 45 | + |
| 46 | + if ( $key == 'property' ) { |
| 47 | + $this->m_property = $value; |
| 48 | + } elseif ( $key == 'label' ) { |
| 49 | + $this->m_label = $value; |
| 50 | + } elseif ( defined( 'SMW_AGGREGATION_VERSION' ) && $key == 'aggregation' ) { |
| 51 | + $this->m_aggregation = $value; |
| 52 | + } else { |
| 53 | + throw new MWException( __METHOD__ . ": invalid key/value pair: property=property name, label=query label" . |
| 54 | + ( defined( 'SMW_AGGREGATION_VERSION' ) ? ", aggregation=agg_type" : "" ) ); |
| 55 | + } |
| 56 | + } |
| 57 | + |
| 58 | + protected function getXMLAttributes() { |
| 59 | + return 'property="' . self::xml_entities( $this->m_property ) . '"' . |
| 60 | + ( $this->m_aggregation == '' ? "" : ( ' aggregation="' . self::xml_entities( $this->m_aggregation ) . '"' ) ) . |
| 61 | + ( $this->m_label == '' ? "" : ( ' label="' . self::xml_entities( $this->m_label ) . '"' ) ); |
| 62 | + } |
| 63 | +} |
Property changes on: trunk/extensions/WikiObjectModel/includes/models/WOM_OM_QueryPrintout.php |
___________________________________________________________________ |
Added: svn:eol-style |
64 | 64 | + native |
Index: trunk/extensions/WikiObjectModel/includes/models/WOM_OM_NestPropertyValue.php |
— | — | @@ -1,20 +1,20 @@ |
2 | | -<?php
|
3 | | -/**
|
4 | | - * This model implements Parameter / Template_field value models.
|
5 | | - *
|
6 | | - * @author Ning
|
7 | | - * @file
|
8 | | - * @ingroup WikiObjectModels
|
9 | | - *
|
10 | | - */
|
11 | | -
|
12 | | -class WOMNestPropertyValueModel extends WikiObjectModelCollection {
|
13 | | -
|
14 | | - public function __construct() {
|
15 | | - parent::__construct( WOM_TYPE_NESTPROPERTYVAL );
|
16 | | - }
|
17 | | -
|
18 | | - public function setXMLAttribute( $key, $value ) {
|
19 | | - throw new MWException( __METHOD__ . ": no key/value pair required" );
|
20 | | - }
|
21 | | -}
|
| 2 | +<?php |
| 3 | +/** |
| 4 | + * This model implements Parameter / Template_field value models. |
| 5 | + * |
| 6 | + * @author Ning |
| 7 | + * @file |
| 8 | + * @ingroup WikiObjectModels |
| 9 | + * |
| 10 | + */ |
| 11 | + |
| 12 | +class WOMNestPropertyValueModel extends WikiObjectModelCollection { |
| 13 | + |
| 14 | + public function __construct() { |
| 15 | + parent::__construct( WOM_TYPE_NESTPROPERTYVAL ); |
| 16 | + } |
| 17 | + |
| 18 | + public function setXMLAttribute( $key, $value ) { |
| 19 | + throw new MWException( __METHOD__ . ": no key/value pair required" ); |
| 20 | + } |
| 21 | +} |
Property changes on: trunk/extensions/WikiObjectModel/includes/models/WOM_OM_NestPropertyValue.php |
___________________________________________________________________ |
Added: svn:eol-style |
22 | 22 | + native |
Index: trunk/extensions/SolrStore/SolrConnector.php |
— | — | @@ -1,96 +1,96 @@ |
2 | | -<?php
|
3 | | -
|
4 | | -/**
|
5 | | - * A terminology markup extension with a Semantic MediaWiki backend
|
6 | | - *
|
7 | | - * @defgroup SolrStore
|
8 | | - * @author Stephan Gambke, Simon Bachenberg
|
9 | | - * @version 0.5 Beta
|
10 | | - */
|
11 | | -
|
12 | | -/**
|
13 | | - * The main file of the SolrConnector extension
|
14 | | - *
|
15 | | - * @file
|
16 | | - * @ingroup SolrStore
|
17 | | - */
|
18 | | -
|
19 | | -
|
20 | | -if ( !defined( 'MEDIAWIKI' ) ) {
|
21 | | - die( 'This file is part of a MediaWiki extension, it is not a valid entry point.' );
|
22 | | -}
|
23 | | -
|
24 | | -if ( !defined( 'SMW_VERSION' ) ) {
|
25 | | - die( 'SolrConnector depends on the Semantic MediaWiki extension. You need to install Semantic MediaWiki first.' );
|
26 | | -}
|
27 | | -
|
28 | | -/**
|
29 | | - * The Solr Connector version
|
30 | | - */
|
31 | | -define( 'SC_VERSION', '0.5 Beta' );
|
32 | | -
|
33 | | -// register the extension
|
34 | | -//TODO: Add other authors here and in the file header
|
35 | | -$wgExtensionCredits[defined( 'SEMANTIC_EXTENSION_TYPE' ) ? 'semantic' : 'other'][] = array(
|
36 | | - 'path' => __FILE__,
|
37 | | - 'name' => 'SolrStore',
|
38 | | - 'author' => array( '[http://www.mediawiki.org/wiki/User:F.trott Stephan Gambke]', '[http://www.mediawiki.org/wiki/User:SBachenberg Simon Bachenberg]', 'Sascha Schüller' ),
|
39 | | - 'url' => 'http://www.mediawiki.org/wiki/Extension:SolrStore',
|
40 | | - 'descriptionmsg' => 'solrconnector-desc',
|
41 | | - 'version' => SC_VERSION,
|
42 | | -);
|
43 | | -
|
44 | | -
|
45 | | -// server-local path to this file
|
46 | | -$dir = dirname( __FILE__ );
|
47 | | -
|
48 | | -// register message file
|
49 | | -$wgExtensionMessagesFiles['SolrConnector'] = $dir . '/SolrConnector.i18n.php';
|
50 | | -//$wgExtensionMessagesFiles['SolrConnectorAlias'] = $dir . '/SolrConnector.alias.php';
|
51 | | -
|
52 | | -// register class files with the Autoloader
|
53 | | -$wgAutoloadClasses['SolrConnectorStore'] = $dir . '/SolrConnectorStore.php';
|
54 | | -$wgAutoloadClasses['SolrDoc'] = $dir . '/SolrDoc.php';
|
55 | | -$wgAutoloadClasses['SolrTalker'] = $dir . '/SolrTalker.php';
|
56 | | -$wgAutoloadClasses['SolrSearch'] = $dir . '/SolrSearch.php';
|
57 | | -$wgAutoloadClasses['SolrResult'] = $dir . '/SolrSearch.php';
|
58 | | -$wgAutoloadClasses['SolrSearchSet'] = $dir . '/SolrSearch.php';
|
59 | | -$wgAutoloadClasses['SpecialSolrSearch'] = $dir . '/SpecialSolrSearch.php';
|
60 | | -$wgAutoloadClasses['SolrSearchFieldSet'] = $dir . '/SolrSearchFieldSet.php';
|
61 | | -
|
62 | | -
|
63 | | -// Specialpage
|
64 | | -$wgSpecialPages['SolrSearch'] = 'SpecialSolrSearch'; # Tell MediaWiki about the new special page and its class name
|
65 | | -$wgSpecialPageGroups['SolrSearch'] = 'smw_group';
|
66 | | -// register Special pages
|
67 | | -//$wgSpecialPages['SemanticGlossaryBrowser'] = 'SpecialSemanticGlossaryBrowser';
|
68 | | -//$wgSpecialPageGroups['SemanticGlossaryBrowser'] = 'other';
|
69 | | -
|
70 | | -// register hook handlers
|
71 | | -//$wgHooks['smwInitProperties'][] = 'SemanticGlossaryRegisterProperties';
|
72 | | -//$wgHooks['smwInitDatatypes'][] = 'SemanticGlossaryRegisterPropertyAliases';
|
73 | | -
|
74 | | -// register resource modules with the Resource Loader
|
75 | | -//$wgResourceModules['ext.SemanticGlossary.Browser'] = array(
|
76 | | -// 'localBasePath' => $dir,
|
77 | | -// 'styles' => 'skins/SemanticGlossaryBrowser.css',
|
78 | | -// 'remoteExtPath' => 'SemanticGlossary'
|
79 | | -//);
|
80 | | -
|
81 | | -// Create new permission 'editglossary' and assign it to usergroup 'user' by default
|
82 | | -$wgGroupPermissions['user']['editglossary'] = true;
|
83 | | -
|
84 | | -
|
85 | | -// original store
|
86 | | -$wgscBaseStore = $smwgDefaultStore;
|
87 | | -$smwgDefaultStore = "SolrConnectorStore";
|
88 | | -$smwgQuerySources["solr"] = "SolrConnectorStore";
|
89 | | -$wgSearchType = 'SolrSearch';
|
90 | | -
|
91 | | -// Solr Configuration
|
92 | | -$wgSolrTalker = new SolrTalker();
|
93 | | -if ( !isset( $wgSolrUrl ) ){
|
94 | | - //Url to the Solr Server
|
95 | | - $wgSolrUrl = 'http://svbosofixwiki:8180/solr';
|
96 | | -}
|
97 | | -
|
| 2 | +<?php |
| 3 | + |
| 4 | +/** |
| 5 | + * A terminology markup extension with a Semantic MediaWiki backend |
| 6 | + * |
| 7 | + * @defgroup SolrStore |
| 8 | + * @author Stephan Gambke, Simon Bachenberg |
| 9 | + * @version 0.5 Beta |
| 10 | + */ |
| 11 | + |
| 12 | +/** |
| 13 | + * The main file of the SolrConnector extension |
| 14 | + * |
| 15 | + * @file |
| 16 | + * @ingroup SolrStore |
| 17 | + */ |
| 18 | + |
| 19 | + |
| 20 | +if ( !defined( 'MEDIAWIKI' ) ) { |
| 21 | + die( 'This file is part of a MediaWiki extension, it is not a valid entry point.' ); |
| 22 | +} |
| 23 | + |
| 24 | +if ( !defined( 'SMW_VERSION' ) ) { |
| 25 | + die( 'SolrConnector depends on the Semantic MediaWiki extension. You need to install Semantic MediaWiki first.' ); |
| 26 | +} |
| 27 | + |
| 28 | +/** |
| 29 | + * The Solr Connector version |
| 30 | + */ |
| 31 | +define( 'SC_VERSION', '0.5 Beta' ); |
| 32 | + |
| 33 | +// register the extension |
| 34 | +//TODO: Add other authors here and in the file header |
| 35 | +$wgExtensionCredits[defined( 'SEMANTIC_EXTENSION_TYPE' ) ? 'semantic' : 'other'][] = array( |
| 36 | + 'path' => __FILE__, |
| 37 | + 'name' => 'SolrStore', |
| 38 | + 'author' => array( '[http://www.mediawiki.org/wiki/User:F.trott Stephan Gambke]', '[http://www.mediawiki.org/wiki/User:SBachenberg Simon Bachenberg]', 'Sascha Schüller' ), |
| 39 | + 'url' => 'http://www.mediawiki.org/wiki/Extension:SolrStore', |
| 40 | + 'descriptionmsg' => 'solrconnector-desc', |
| 41 | + 'version' => SC_VERSION, |
| 42 | +); |
| 43 | + |
| 44 | + |
| 45 | +// server-local path to this file |
| 46 | +$dir = dirname( __FILE__ ); |
| 47 | + |
| 48 | +// register message file |
| 49 | +$wgExtensionMessagesFiles['SolrConnector'] = $dir . '/SolrConnector.i18n.php'; |
| 50 | +//$wgExtensionMessagesFiles['SolrConnectorAlias'] = $dir . '/SolrConnector.alias.php'; |
| 51 | + |
| 52 | +// register class files with the Autoloader |
| 53 | +$wgAutoloadClasses['SolrConnectorStore'] = $dir . '/SolrConnectorStore.php'; |
| 54 | +$wgAutoloadClasses['SolrDoc'] = $dir . '/SolrDoc.php'; |
| 55 | +$wgAutoloadClasses['SolrTalker'] = $dir . '/SolrTalker.php'; |
| 56 | +$wgAutoloadClasses['SolrSearch'] = $dir . '/SolrSearch.php'; |
| 57 | +$wgAutoloadClasses['SolrResult'] = $dir . '/SolrSearch.php'; |
| 58 | +$wgAutoloadClasses['SolrSearchSet'] = $dir . '/SolrSearch.php'; |
| 59 | +$wgAutoloadClasses['SpecialSolrSearch'] = $dir . '/SpecialSolrSearch.php'; |
| 60 | +$wgAutoloadClasses['SolrSearchFieldSet'] = $dir . '/SolrSearchFieldSet.php'; |
| 61 | + |
| 62 | + |
| 63 | +// Specialpage |
| 64 | +$wgSpecialPages['SolrSearch'] = 'SpecialSolrSearch'; # Tell MediaWiki about the new special page and its class name |
| 65 | +$wgSpecialPageGroups['SolrSearch'] = 'smw_group'; |
| 66 | +// register Special pages |
| 67 | +//$wgSpecialPages['SemanticGlossaryBrowser'] = 'SpecialSemanticGlossaryBrowser'; |
| 68 | +//$wgSpecialPageGroups['SemanticGlossaryBrowser'] = 'other'; |
| 69 | + |
| 70 | +// register hook handlers |
| 71 | +//$wgHooks['smwInitProperties'][] = 'SemanticGlossaryRegisterProperties'; |
| 72 | +//$wgHooks['smwInitDatatypes'][] = 'SemanticGlossaryRegisterPropertyAliases'; |
| 73 | + |
| 74 | +// register resource modules with the Resource Loader |
| 75 | +//$wgResourceModules['ext.SemanticGlossary.Browser'] = array( |
| 76 | +// 'localBasePath' => $dir, |
| 77 | +// 'styles' => 'skins/SemanticGlossaryBrowser.css', |
| 78 | +// 'remoteExtPath' => 'SemanticGlossary' |
| 79 | +//); |
| 80 | + |
| 81 | +// Create new permission 'editglossary' and assign it to usergroup 'user' by default |
| 82 | +$wgGroupPermissions['user']['editglossary'] = true; |
| 83 | + |
| 84 | + |
| 85 | +// original store |
| 86 | +$wgscBaseStore = $smwgDefaultStore; |
| 87 | +$smwgDefaultStore = "SolrConnectorStore"; |
| 88 | +$smwgQuerySources["solr"] = "SolrConnectorStore"; |
| 89 | +$wgSearchType = 'SolrSearch'; |
| 90 | + |
| 91 | +// Solr Configuration |
| 92 | +$wgSolrTalker = new SolrTalker(); |
| 93 | +if ( !isset( $wgSolrUrl ) ){ |
| 94 | + //Url to the Solr Server |
| 95 | + $wgSolrUrl = 'http://svbosofixwiki:8180/solr'; |
| 96 | +} |
| 97 | + |
Property changes on: trunk/extensions/SolrStore/SolrConnector.php |
___________________________________________________________________ |
Added: svn:eol-style |
98 | 98 | + native |
Index: trunk/extensions/SolrStore/doc/install-solr |
— | — | @@ -1,85 +1,85 @@ |
2 | | -=Install Apache Solr under Ubuntu=
|
3 | | -
|
4 | | -This Tutorial describes how to install a local Tomcat Server with the newest Solr Version.
|
5 | | -
|
6 | | -==Java Runtime Environment installieren==
|
7 | | -
|
8 | | -At First we need a Java Runtime Environment. You can use OpenJdk or Oracle (Sun) Java Version 6+
|
9 | | -
|
10 | | - aptitude install default-jre
|
11 | | -
|
12 | | -or
|
13 | | -
|
14 | | - apt-get install openjdk-6-jdk
|
15 | | -
|
16 | | -==Tomcat downloading and install==
|
17 | | -
|
18 | | -At Firts we need the newest Tomcat Version from Apache.org. If this link isn't working anymore go to tomcat.apache.org
|
19 | | -
|
20 | | - cd /opt
|
21 | | - wget http://artfiles.org/apache.org/tomcat/tomcat-7/v7.0.23/bin/apache-tomcat-7.0.23.tar.gz
|
22 | | - tar xvfz apache-tomcat-7.0.23.tar.gz
|
23 | | - ln -s apache-tomcat-7.0.23 tomcat
|
24 | | - rm apache-tomcat-7.0.23.tar.gz
|
25 | | -
|
26 | | -==Solr downloading and install==
|
27 | | -
|
28 | | -Now we need the Newest Version of Solr. You can find it on the Apache Site (http://www.apache.org/dyn/closer.cgi/lucene/solr/)
|
29 | | -
|
30 | | - cd /opt
|
31 | | - wget http://apache.imsam.info//lucene/solr/3.5.0/apache-solr-3.5.0.tgz
|
32 | | - tar xvfz apache-solr-3.5.0.tgz
|
33 | | - rm apache-solr-3.5.0.tgz
|
34 | | -
|
35 | | -Now we deploy Apache Solr to the Tomcat Server. Copy the war File from the "dist" dir to your Tomcat webapps folder.
|
36 | | -
|
37 | | - cd /opt
|
38 | | - cp apache-solr-3.5.0/dist/apache-solr-3.5.0.war tomcat/webapps/solr.war
|
39 | | -
|
40 | | -Now copy the Multicore Example to your Solr Folder /opt/solr. Now you can delete the other solr files, we dont need them.
|
41 | | -
|
42 | | - cd /opt
|
43 | | - cp -R apache-solr-3.5.0/example/multicore/ solr
|
44 | | - rm -R apache-solr-3.5.0
|
45 | | -
|
46 | | -Now we can start your new Tomcat server.
|
47 | | -
|
48 | | -Note: It's important to strat the Tomcat Server from /opt, otherwise the Tomcat Server will not find your solr dir.
|
49 | | -
|
50 | | - cd /opt
|
51 | | - ./tomcat/bin/startup.sh
|
52 | | -
|
53 | | -Now you can see your solr Cores and the admin interface under the url http://yourserver:8080/solr
|
54 | | -
|
55 | | -Your Solr Server is now ready to use, but you should maybe add some security configuration
|
56 | | -
|
57 | | -==Secure your Installation==
|
58 | | -
|
59 | | -Your have just to do a few steps to scure your server.
|
60 | | -
|
61 | | -Move your Data:
|
62 | | -
|
63 | | -Create a new dir and change it in your Solr config. If you use 2 cores you have to change it for eache of them:
|
64 | | -
|
65 | | - mkdir /var/solr
|
66 | | - vi /opt/solr/solr.xml
|
67 | | -
|
68 | | -bevore :
|
69 | | -
|
70 | | - <core name="core-0" instanceDir="core-0" />
|
71 | | - <core name="core-1" instanceDir="core-1" />
|
72 | | -
|
73 | | -after:
|
74 | | -
|
75 | | - <core name="core-0" instanceDir="core-0" dataDir="/var/solr/core-0" />
|
76 | | - <core name="core-1" instanceDir="core-1" dataDir="/var/solr/core-1" />
|
77 | | -
|
78 | | -==Tomcat logging.properties:==
|
79 | | -
|
80 | | -Your Logging Properties should be reduced to SEVERE, otherwise it will be realy big realy fast.
|
81 | | -
|
82 | | -Edit the logging.properties File in /opt/tomcat/conf
|
83 | | -
|
84 | | - vi /opt/tomcat/conf/logging.properties
|
85 | | -
|
86 | | -Default is "FINE". You should change it from "FINE" to "SEVERE"
|
| 2 | +=Install Apache Solr under Ubuntu= |
| 3 | + |
| 4 | +This Tutorial describes how to install a local Tomcat Server with the newest Solr Version. |
| 5 | + |
| 6 | +==Java Runtime Environment installieren== |
| 7 | + |
| 8 | +At First we need a Java Runtime Environment. You can use OpenJdk or Oracle (Sun) Java Version 6+ |
| 9 | + |
| 10 | + aptitude install default-jre |
| 11 | + |
| 12 | +or |
| 13 | + |
| 14 | + apt-get install openjdk-6-jdk |
| 15 | + |
| 16 | +==Tomcat downloading and install== |
| 17 | + |
| 18 | +At Firts we need the newest Tomcat Version from Apache.org. If this link isn't working anymore go to tomcat.apache.org |
| 19 | + |
| 20 | + cd /opt |
| 21 | + wget http://artfiles.org/apache.org/tomcat/tomcat-7/v7.0.23/bin/apache-tomcat-7.0.23.tar.gz |
| 22 | + tar xvfz apache-tomcat-7.0.23.tar.gz |
| 23 | + ln -s apache-tomcat-7.0.23 tomcat |
| 24 | + rm apache-tomcat-7.0.23.tar.gz |
| 25 | + |
| 26 | +==Solr downloading and install== |
| 27 | + |
| 28 | +Now we need the Newest Version of Solr. You can find it on the Apache Site (http://www.apache.org/dyn/closer.cgi/lucene/solr/) |
| 29 | + |
| 30 | + cd /opt |
| 31 | + wget http://apache.imsam.info//lucene/solr/3.5.0/apache-solr-3.5.0.tgz |
| 32 | + tar xvfz apache-solr-3.5.0.tgz |
| 33 | + rm apache-solr-3.5.0.tgz |
| 34 | + |
| 35 | +Now we deploy Apache Solr to the Tomcat Server. Copy the war File from the "dist" dir to your Tomcat webapps folder. |
| 36 | + |
| 37 | + cd /opt |
| 38 | + cp apache-solr-3.5.0/dist/apache-solr-3.5.0.war tomcat/webapps/solr.war |
| 39 | + |
| 40 | +Now copy the Multicore Example to your Solr Folder /opt/solr. Now you can delete the other solr files, we dont need them. |
| 41 | + |
| 42 | + cd /opt |
| 43 | + cp -R apache-solr-3.5.0/example/multicore/ solr |
| 44 | + rm -R apache-solr-3.5.0 |
| 45 | + |
| 46 | +Now we can start your new Tomcat server. |
| 47 | + |
| 48 | +Note: It's important to strat the Tomcat Server from /opt, otherwise the Tomcat Server will not find your solr dir. |
| 49 | + |
| 50 | + cd /opt |
| 51 | + ./tomcat/bin/startup.sh |
| 52 | + |
| 53 | +Now you can see your solr Cores and the admin interface under the url http://yourserver:8080/solr |
| 54 | + |
| 55 | +Your Solr Server is now ready to use, but you should maybe add some security configuration |
| 56 | + |
| 57 | +==Secure your Installation== |
| 58 | + |
| 59 | +Your have just to do a few steps to scure your server. |
| 60 | + |
| 61 | +Move your Data: |
| 62 | + |
| 63 | +Create a new dir and change it in your Solr config. If you use 2 cores you have to change it for eache of them: |
| 64 | + |
| 65 | + mkdir /var/solr |
| 66 | + vi /opt/solr/solr.xml |
| 67 | + |
| 68 | +bevore : |
| 69 | + |
| 70 | + <core name="core-0" instanceDir="core-0" /> |
| 71 | + <core name="core-1" instanceDir="core-1" /> |
| 72 | + |
| 73 | +after: |
| 74 | + |
| 75 | + <core name="core-0" instanceDir="core-0" dataDir="/var/solr/core-0" /> |
| 76 | + <core name="core-1" instanceDir="core-1" dataDir="/var/solr/core-1" /> |
| 77 | + |
| 78 | +==Tomcat logging.properties:== |
| 79 | + |
| 80 | +Your Logging Properties should be reduced to SEVERE, otherwise it will be realy big realy fast. |
| 81 | + |
| 82 | +Edit the logging.properties File in /opt/tomcat/conf |
| 83 | + |
| 84 | + vi /opt/tomcat/conf/logging.properties |
| 85 | + |
| 86 | +Default is "FINE". You should change it from "FINE" to "SEVERE" |
Property changes on: trunk/extensions/SolrStore/doc/install-solr |
___________________________________________________________________ |
Added: svn:eol-style |
87 | 87 | + native |
Index: trunk/extensions/SolrStore/doc/install-solr-ger |
— | — | @@ -1,106 +1,106 @@ |
2 | | -=Apache Solr unter Ubuntu installieren=
|
3 | | -
|
4 | | -Dieses Tutorial erklärt wie man sich zu Entwicklungzwecken lokal einen Tomcat Server mit der aktuellsten Solr Version installiert.
|
5 | | -Java Runtime Environment installieren
|
6 | | -
|
7 | | -Zunächst müssen wir das Java Runtime Environment unter Ubuntu mit aptitude installieren.
|
8 | | -
|
9 | | - aptitude install default-jre
|
10 | | -
|
11 | | -==Tomcat downloaden und installieren==
|
12 | | -
|
13 | | -Zunächst müssen wir die aktuellste Tomcat Version von Apache.org besorgen. Falls der Mirrorlink nicht mehr aktuell sein sollte, kann die aktuelle Quelle unter tomcat.apache.org festgestellt werden.
|
14 | | -
|
15 | | - cd /opt
|
16 | | - wget http://artfiles.org/apache.org/tomcat/tomcat-7/v7.0.23/bin/apache-tomcat-7.0.23.tar.gz
|
17 | | - tar xvfz apache-tomcat-7.0.23.tar.gz
|
18 | | - ln -s apache-tomcat-7.0.23 tomcat
|
19 | | - rm apache-tomcat-7.0.23.tar.gz
|
20 | | -
|
21 | | -==Solr downloaden und installieren==
|
22 | | -
|
23 | | -Nun brauchst du noch die aktuellste Solr Version. Diese kann auf der Apache Website ermittet werden (http://www.apache.org/dyn/closer.cgi/lucene/solr/)
|
24 | | -
|
25 | | - cd /opt
|
26 | | - wget http://apache.imsam.info//lucene/solr/3.5.0/apache-solr-3.5.0.tgz
|
27 | | - tar xvfz apache-solr-3.5.0.tgz
|
28 | | - rm apache-solr-3.5.0.tgz
|
29 | | -
|
30 | | -Nun wird Apache Solr in den Tomcat Server deployed. Im dist Vereichnis gibt es dazu eine war Datei:
|
31 | | -
|
32 | | - cd /opt
|
33 | | - cp apache-solr-3.5.0/dist/apache-solr-3.5.0.war tomcat/webapps/solr.war
|
34 | | -
|
35 | | -Nun kopieren wir die Multicore Beispielkonfiguration auf dem Solr Paket in /opt/solr.
|
36 | | -Danach können wir das Quellverzeichnis von solr löschen, da wir alles daraus haben was wir brauchen.
|
37 | | -
|
38 | | - cd /opt
|
39 | | - cp -R apache-solr-3.5.0/example/multicore/ solr
|
40 | | - rm -R apache-solr-3.5.0
|
41 | | -
|
42 | | -Nun können wir den Tomcat Server starten.
|
43 | | -
|
44 | | -Anmerkung: Es ist wichtig, das der Tomcat Server von /opt gestartet wird, da der Tomcat Server sonst das Verzeichnis mit der solr
|
45 | | -Konfiguration (/opt/solr) nicht finden kann.
|
46 | | -
|
47 | | - cd /opt
|
48 | | - ./tomcat/bin/startup.sh
|
49 | | -
|
50 | | -Nun kann unter hostname/solr der Solr Server aufgerufen werden. Dabei solltest du eine Liste der Cores sehen,
|
51 | | -die auf das Admininterface verlinken:
|
52 | | -
|
53 | | -Grundsätzlich ist der Solr Server nun bereit. Aus Gründen der Sicherheit sollten jedoch noch ein paar Anpassungen am Basis Setup gemacht werden.
|
54 | | -
|
55 | | -==Basis Installation absichern==
|
56 | | -
|
57 | | -Es sind noch ein paar Schritte notwendig, die mindestens gemacht werden sollten um den Solr Server abzusichern.
|
58 | | -
|
59 | | -Datenverzeichnis verschieben:
|
60 | | -
|
61 | | -Das Datenverzeichnis sollte in ein eigene Verzeichnis gelegt werden.
|
62 | | -
|
63 | | -Dazu legen wir auf der /var Partition ein Verzeichnis an und passen die solr.xml Datei an:
|
64 | | -
|
65 | | - mkdir /var/solr
|
66 | | - vi /opt/solr/solr.xml
|
67 | | -
|
68 | | -von :
|
69 | | -
|
70 | | - <core name="core-0" instanceDir="core-0" />
|
71 | | - <core name="core-1" instanceDir="core-1" />
|
72 | | -
|
73 | | -nach:
|
74 | | -
|
75 | | - <core name="core-0" instanceDir="core-0" dataDir="/var/solr/core-0" />
|
76 | | - <core name="core-1" instanceDir="core-1" dataDir="/var/solr/core-1" />
|
77 | | -
|
78 | | -==Tomcat logging.properties anpassen:==
|
79 | | -
|
80 | | -Die Logging Properties von Tomcat sollten auf SEVERE reduziert werden, da sonst das Log sehr schnell sehr groß wird.
|
81 | | -
|
82 | | -Dazu ist die logging.properties Datei in /opt/tomcat/conf anzupassen.
|
83 | | -
|
84 | | - vi /opt/tomcat/conf/logging.properties
|
85 | | -
|
86 | | -Per Default ist hier die feinste Stufe eingestellt also "FINE". Hier sollte statt "FINE" "SEVERE" verwendet werden.
|
87 | | -
|
88 | | -Ausserdem ist darüber nachzudenken ob die Log Dateien lieber in /var/log abgelegt werden sollen.
|
89 | | -
|
90 | | -Nehme also hier die nötigen Anpassungen vor und Starte den Tomcat Server neu.
|
91 | | -
|
92 | | -Zugriff auf Port 8080 nur von localhost erlauben:
|
93 | | -
|
94 | | -Der Zugriff auf den Port 8080 sollte auf localhost limitiert werden, da solr selbst keine Authentifizierung hat
|
95 | | -und der Server sonst für jeden zugreifbar ist.
|
96 | | -
|
97 | | -Das machen wir am besten mit iptables, da dann Request garnicht erst beim Tomcat ankommen:
|
98 | | -
|
99 | | - iptables -A INPUT -p tcp ! -s 127.0.0.1 --dport 8080 -j DROP
|
100 | | -
|
101 | | -Nun solltest du nochmal testen, das du von einem externen Host Solr nicht mehr aufrufen kannst, aber nachwievor noch
|
102 | | -lokal zugreifen kannst.
|
103 | | -
|
104 | | -Auf dem Server sollte also folgendes noch funktionieren;
|
105 | | -
|
106 | | - cd ~
|
107 | | - wget http://localhost:8080/solr
|
| 2 | +=Apache Solr unter Ubuntu installieren= |
| 3 | + |
| 4 | +Dieses Tutorial erklärt wie man sich zu Entwicklungzwecken lokal einen Tomcat Server mit der aktuellsten Solr Version installiert. |
| 5 | +Java Runtime Environment installieren |
| 6 | + |
| 7 | +Zunächst müssen wir das Java Runtime Environment unter Ubuntu mit aptitude installieren. |
| 8 | + |
| 9 | + aptitude install default-jre |
| 10 | + |
| 11 | +==Tomcat downloaden und installieren== |
| 12 | + |
| 13 | +Zunächst müssen wir die aktuellste Tomcat Version von Apache.org besorgen. Falls der Mirrorlink nicht mehr aktuell sein sollte, kann die aktuelle Quelle unter tomcat.apache.org festgestellt werden. |
| 14 | + |
| 15 | + cd /opt |
| 16 | + wget http://artfiles.org/apache.org/tomcat/tomcat-7/v7.0.23/bin/apache-tomcat-7.0.23.tar.gz |
| 17 | + tar xvfz apache-tomcat-7.0.23.tar.gz |
| 18 | + ln -s apache-tomcat-7.0.23 tomcat |
| 19 | + rm apache-tomcat-7.0.23.tar.gz |
| 20 | + |
| 21 | +==Solr downloaden und installieren== |
| 22 | + |
| 23 | +Nun brauchst du noch die aktuellste Solr Version. Diese kann auf der Apache Website ermittet werden (http://www.apache.org/dyn/closer.cgi/lucene/solr/) |
| 24 | + |
| 25 | + cd /opt |
| 26 | + wget http://apache.imsam.info//lucene/solr/3.5.0/apache-solr-3.5.0.tgz |
| 27 | + tar xvfz apache-solr-3.5.0.tgz |
| 28 | + rm apache-solr-3.5.0.tgz |
| 29 | + |
| 30 | +Nun wird Apache Solr in den Tomcat Server deployed. Im dist Vereichnis gibt es dazu eine war Datei: |
| 31 | + |
| 32 | + cd /opt |
| 33 | + cp apache-solr-3.5.0/dist/apache-solr-3.5.0.war tomcat/webapps/solr.war |
| 34 | + |
| 35 | +Nun kopieren wir die Multicore Beispielkonfiguration auf dem Solr Paket in /opt/solr. |
| 36 | +Danach können wir das Quellverzeichnis von solr löschen, da wir alles daraus haben was wir brauchen. |
| 37 | + |
| 38 | + cd /opt |
| 39 | + cp -R apache-solr-3.5.0/example/multicore/ solr |
| 40 | + rm -R apache-solr-3.5.0 |
| 41 | + |
| 42 | +Nun können wir den Tomcat Server starten. |
| 43 | + |
| 44 | +Anmerkung: Es ist wichtig, das der Tomcat Server von /opt gestartet wird, da der Tomcat Server sonst das Verzeichnis mit der solr |
| 45 | +Konfiguration (/opt/solr) nicht finden kann. |
| 46 | + |
| 47 | + cd /opt |
| 48 | + ./tomcat/bin/startup.sh |
| 49 | + |
| 50 | +Nun kann unter hostname/solr der Solr Server aufgerufen werden. Dabei solltest du eine Liste der Cores sehen, |
| 51 | +die auf das Admininterface verlinken: |
| 52 | + |
| 53 | +Grundsätzlich ist der Solr Server nun bereit. Aus Gründen der Sicherheit sollten jedoch noch ein paar Anpassungen am Basis Setup gemacht werden. |
| 54 | + |
| 55 | +==Basis Installation absichern== |
| 56 | + |
| 57 | +Es sind noch ein paar Schritte notwendig, die mindestens gemacht werden sollten um den Solr Server abzusichern. |
| 58 | + |
| 59 | +Datenverzeichnis verschieben: |
| 60 | + |
| 61 | +Das Datenverzeichnis sollte in ein eigene Verzeichnis gelegt werden. |
| 62 | + |
| 63 | +Dazu legen wir auf der /var Partition ein Verzeichnis an und passen die solr.xml Datei an: |
| 64 | + |
| 65 | + mkdir /var/solr |
| 66 | + vi /opt/solr/solr.xml |
| 67 | + |
| 68 | +von : |
| 69 | + |
| 70 | + <core name="core-0" instanceDir="core-0" /> |
| 71 | + <core name="core-1" instanceDir="core-1" /> |
| 72 | + |
| 73 | +nach: |
| 74 | + |
| 75 | + <core name="core-0" instanceDir="core-0" dataDir="/var/solr/core-0" /> |
| 76 | + <core name="core-1" instanceDir="core-1" dataDir="/var/solr/core-1" /> |
| 77 | + |
| 78 | +==Tomcat logging.properties anpassen:== |
| 79 | + |
| 80 | +Die Logging Properties von Tomcat sollten auf SEVERE reduziert werden, da sonst das Log sehr schnell sehr groß wird. |
| 81 | + |
| 82 | +Dazu ist die logging.properties Datei in /opt/tomcat/conf anzupassen. |
| 83 | + |
| 84 | + vi /opt/tomcat/conf/logging.properties |
| 85 | + |
| 86 | +Per Default ist hier die feinste Stufe eingestellt also "FINE". Hier sollte statt "FINE" "SEVERE" verwendet werden. |
| 87 | + |
| 88 | +Ausserdem ist darüber nachzudenken ob die Log Dateien lieber in /var/log abgelegt werden sollen. |
| 89 | + |
| 90 | +Nehme also hier die nötigen Anpassungen vor und Starte den Tomcat Server neu. |
| 91 | + |
| 92 | +Zugriff auf Port 8080 nur von localhost erlauben: |
| 93 | + |
| 94 | +Der Zugriff auf den Port 8080 sollte auf localhost limitiert werden, da solr selbst keine Authentifizierung hat |
| 95 | +und der Server sonst für jeden zugreifbar ist. |
| 96 | + |
| 97 | +Das machen wir am besten mit iptables, da dann Request garnicht erst beim Tomcat ankommen: |
| 98 | + |
| 99 | + iptables -A INPUT -p tcp ! -s 127.0.0.1 --dport 8080 -j DROP |
| 100 | + |
| 101 | +Nun solltest du nochmal testen, das du von einem externen Host Solr nicht mehr aufrufen kannst, aber nachwievor noch |
| 102 | +lokal zugreifen kannst. |
| 103 | + |
| 104 | +Auf dem Server sollte also folgendes noch funktionieren; |
| 105 | + |
| 106 | + cd ~ |
| 107 | + wget http://localhost:8080/solr |
Property changes on: trunk/extensions/SolrStore/doc/install-solr-ger |
___________________________________________________________________ |
Added: svn:eol-style |
108 | 108 | + native |
Property changes on: trunk/extensions/SolrStore/SolrTalker.php |
___________________________________________________________________ |
Added: svn:eol-style |
109 | 109 | + native |
Index: trunk/extensions/SolrStore/solr-example/core0/conf/schema.xml |
— | — | @@ -1,608 +1,608 @@ |
2 | | -<?xml version="1.0" encoding="UTF-8" ?>
|
3 | | -<!--
|
4 | | - Licensed to the Apache Software Foundation (ASF) under one or more
|
5 | | - contributor license agreements. See the NOTICE file distributed with
|
6 | | - this work for additional information regarding copyright ownership.
|
7 | | - The ASF licenses this file to You under the Apache License, Version 2.0
|
8 | | - (the "License"); you may not use this file except in compliance with
|
9 | | - the License. You may obtain a copy of the License at
|
10 | | -
|
11 | | - http://www.apache.org/licenses/LICENSE-2.0
|
12 | | -
|
13 | | - Unless required by applicable law or agreed to in writing, software
|
14 | | - distributed under the License is distributed on an "AS IS" BASIS,
|
15 | | - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 | | - See the License for the specific language governing permissions and
|
17 | | - limitations under the License.
|
18 | | -
|
19 | | -<!--
|
20 | | - This is the Solr schema file. This file should be named "schema.xml" and
|
21 | | - should be in the conf directory under the solr home
|
22 | | - (i.e. ./solr/conf/schema.xml by default)
|
23 | | - or located where the classloader for the Solr webapp can find it.
|
24 | | -
|
25 | | - This example schema is the recommended starting point for users.
|
26 | | - It should be kept correct and concise, usable out-of-the-box.
|
27 | | -
|
28 | | - For more information, on how to customize this file, please see
|
29 | | - http://wiki.apache.org/solr/SchemaXml
|
30 | | -
|
31 | | - PERFORMANCE NOTE: this schema includes many optional features and should not
|
32 | | - be used for benchmarking. To improve performance one could
|
33 | | - - set stored="false" for all fields possible (esp large fields) when you
|
34 | | - only need to search on the field but don't need to return the original
|
35 | | - value.
|
36 | | - - set indexed="false" if you don't need to search on the field, but only
|
37 | | - return the field as a result of searching on other indexed fields.
|
38 | | - - remove all unneeded copyField statements
|
39 | | - - for best index size and searching performance, set "index" to false
|
40 | | - for all general text fields, use copyField to copy them to the
|
41 | | - catchall "text" field, and use that for searching.
|
42 | | - - For maximum indexing performance, use the StreamingUpdateSolrServer
|
43 | | - java client.
|
44 | | - - Remember to run the JVM in server mode, and use a higher logging level
|
45 | | - that avoids logging every request
|
46 | | -
|
47 | | -<schema name="example" version="1.2">
|
48 | | - <!-- attribute "name" is the name of this schema and is only used for display purposes.
|
49 | | - Applications should change this to reflect the nature of the search collection.
|
50 | | - version="1.2" is Solr's version number for the schema syntax and semantics. It should
|
51 | | - not normally be changed by applications.
|
52 | | - 1.0: multiValued attribute did not exist, all fields are multiValued by nature
|
53 | | - 1.1: multiValued attribute introduced, false by default
|
54 | | - 1.2: omitTermFreqAndPositions attribute introduced, true by default except for text fields.
|
55 | | - -->
|
56 | | -
|
57 | | - <types>
|
58 | | - <!-- field type definitions. The "name" attribute is
|
59 | | - just a label to be used by field definitions. The "class"
|
60 | | - attribute and any other attributes determine the real
|
61 | | - behavior of the fieldType.
|
62 | | - Class names starting with "solr" refer to java classes in the
|
63 | | - org.apache.solr.analysis package.
|
64 | | - -->
|
65 | | -
|
66 | | - <!-- The StrField type is not analyzed, but indexed/stored verbatim.
|
67 | | - - StrField and TextField support an optional compressThreshold which
|
68 | | - limits compression (if enabled in the derived fields) to values which
|
69 | | - exceed a certain size (in characters).
|
70 | | - -->
|
71 | | - <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
|
72 | | -
|
73 | | - <!-- boolean type: "true" or "false" -->
|
74 | | - <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
|
75 | | - <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
|
76 | | - <fieldtype name="binary" class="solr.BinaryField"/>
|
77 | | -
|
78 | | - <!-- The optional sortMissingLast and sortMissingFirst attributes are
|
79 | | - currently supported on types that are sorted internally as strings.
|
80 | | - This includes "string","boolean","sint","slong","sfloat","sdouble","pdate"
|
81 | | - - If sortMissingLast="true", then a sort on this field will cause documents
|
82 | | - without the field to come after documents with the field,
|
83 | | - regardless of the requested sort order (asc or desc).
|
84 | | - - If sortMissingFirst="true", then a sort on this field will cause documents
|
85 | | - without the field to come before documents with the field,
|
86 | | - regardless of the requested sort order.
|
87 | | - - If sortMissingLast="false" and sortMissingFirst="false" (the default),
|
88 | | - then default lucene sorting will be used which places docs without the
|
89 | | - field first in an ascending sort and last in a descending sort.
|
90 | | - -->
|
91 | | -
|
92 | | - <!--
|
93 | | - Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types.
|
94 | | - -->
|
95 | | - <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
|
96 | | - <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
|
97 | | - <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
|
98 | | - <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
|
99 | | -
|
100 | | - <!--
|
101 | | - Numeric field types that index each value at various levels of precision
|
102 | | - to accelerate range queries when the number of values between the range
|
103 | | - endpoints is large. See the javadoc for NumericRangeQuery for internal
|
104 | | - implementation details.
|
105 | | -
|
106 | | - Smaller precisionStep values (specified in bits) will lead to more tokens
|
107 | | - indexed per value, slightly larger index size, and faster range queries.
|
108 | | - A precisionStep of 0 disables indexing at different precision levels.
|
109 | | - -->
|
110 | | - <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
|
111 | | - <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
|
112 | | - <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
|
113 | | - <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
|
114 | | -
|
115 | | - <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
|
116 | | - is a more restricted form of the canonical representation of dateTime
|
117 | | - http://www.w3.org/TR/xmlschema-2/#dateTime
|
118 | | - The trailing "Z" designates UTC time and is mandatory.
|
119 | | - Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z
|
120 | | - All other components are mandatory.
|
121 | | -
|
122 | | - Expressions can also be used to denote calculations that should be
|
123 | | - performed relative to "NOW" to determine the value, ie...
|
124 | | -
|
125 | | - NOW/HOUR
|
126 | | - ... Round to the start of the current hour
|
127 | | - NOW-1DAY
|
128 | | - ... Exactly 1 day prior to now
|
129 | | - NOW/DAY+6MONTHS+3DAYS
|
130 | | - ... 6 months and 3 days in the future from the start of
|
131 | | - the current day
|
132 | | -
|
133 | | - Consult the DateField javadocs for more information.
|
134 | | -
|
135 | | - Note: For faster range queries, consider the tdate type
|
136 | | - -->
|
137 | | - <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/>
|
138 | | -
|
139 | | - <!-- A Trie based date field for faster date range queries and date faceting. -->
|
140 | | - <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>
|
141 | | -
|
142 | | -
|
143 | | - <!--
|
144 | | - Note:
|
145 | | - These should only be used for compatibility with existing indexes (created with older Solr versions)
|
146 | | - or if "sortMissingFirst" or "sortMissingLast" functionality is needed. Use Trie based fields instead.
|
147 | | -
|
148 | | - Plain numeric field types that store and index the text
|
149 | | - value verbatim (and hence don't support range queries, since the
|
150 | | - lexicographic ordering isn't equal to the numeric ordering)
|
151 | | - -->
|
152 | | - <fieldType name="pint" class="solr.IntField" omitNorms="true"/>
|
153 | | - <fieldType name="plong" class="solr.LongField" omitNorms="true"/>
|
154 | | - <fieldType name="pfloat" class="solr.FloatField" omitNorms="true"/>
|
155 | | - <fieldType name="pdouble" class="solr.DoubleField" omitNorms="true"/>
|
156 | | - <fieldType name="pdate" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>
|
157 | | -
|
158 | | -
|
159 | | - <!--
|
160 | | - Note:
|
161 | | - These should only be used for compatibility with existing indexes (created with older Solr versions)
|
162 | | - or if "sortMissingFirst" or "sortMissingLast" functionality is needed. Use Trie based fields instead.
|
163 | | -
|
164 | | - Numeric field types that manipulate the value into
|
165 | | - a string value that isn't human-readable in its internal form,
|
166 | | - but with a lexicographic ordering the same as the numeric ordering,
|
167 | | - so that range queries work correctly.
|
168 | | - -->
|
169 | | - <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
|
170 | | - <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>
|
171 | | - <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/>
|
172 | | - <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/>
|
173 | | -
|
174 | | -
|
175 | | - <!-- The "RandomSortField" is not used to store or search any
|
176 | | - data. You can declare fields of this type it in your schema
|
177 | | - to generate pseudo-random orderings of your docs for sorting
|
178 | | - purposes. The ordering is generated based on the field name
|
179 | | - and the version of the index, As long as the index version
|
180 | | - remains unchanged, and the same field name is reused,
|
181 | | - the ordering of the docs will be consistent.
|
182 | | - If you want different psuedo-random orderings of documents,
|
183 | | - for the same version of the index, use a dynamicField and
|
184 | | - change the name
|
185 | | - -->
|
186 | | - <fieldType name="random" class="solr.RandomSortField" indexed="true" />
|
187 | | -
|
188 | | - <!-- solr.TextField allows the specification of custom text analyzers
|
189 | | - specified as a tokenizer and a list of token filters. Different
|
190 | | - analyzers may be specified for indexing and querying.
|
191 | | -
|
192 | | - The optional positionIncrementGap puts space between multiple fields of
|
193 | | - this type on the same document, with the purpose of preventing false phrase
|
194 | | - matching across fields.
|
195 | | -
|
196 | | - For more info on customizing your analyzer chain, please see
|
197 | | - http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
|
198 | | - -->
|
199 | | -
|
200 | | - <!-- One can also specify an existing Analyzer class that has a
|
201 | | - default constructor via the class attribute on the analyzer element
|
202 | | - <fieldType name="text_greek" class="solr.TextField">
|
203 | | - <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/>
|
204 | | - </fieldType>
|
205 | | - -->
|
206 | | -
|
207 | | - <!-- A text field that only splits on whitespace for exact matching of words -->
|
208 | | - <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
|
209 | | - <analyzer>
|
210 | | - <tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
211 | | - </analyzer>
|
212 | | - </fieldType>
|
213 | | -
|
214 | | - <!-- A text field that uses WordDelimiterFilter to enable splitting and matching of
|
215 | | - words on case-change, alpha numeric boundaries, and non-alphanumeric chars,
|
216 | | - so that a query of "wifi" or "wi fi" could match a document containing "Wi-Fi".
|
217 | | - Synonyms and stopwords are customized by external files, and stemming is enabled.
|
218 | | - -->
|
219 | | - <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
|
220 | | - <analyzer type="index">
|
221 | | - <tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
222 | | - <!-- in this example, we will only use synonyms at query time
|
223 | | - <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
|
224 | | - -->
|
225 | | - <!-- Case insensitive stop word removal.
|
226 | | - add enablePositionIncrements=true in both the index and query
|
227 | | - analyzers to leave a 'gap' for more accurate phrase queries.
|
228 | | - -->
|
229 | | - <filter class="solr.StopFilterFactory"
|
230 | | - ignoreCase="true"
|
231 | | - words="stopwords.txt"
|
232 | | - enablePositionIncrements="true"
|
233 | | - />
|
234 | | - <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
|
235 | | - <filter class="solr.LowerCaseFilterFactory"/>
|
236 | | - <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
|
237 | | - </analyzer>
|
238 | | - <analyzer type="query">
|
239 | | - <tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
240 | | - <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
|
241 | | - <filter class="solr.StopFilterFactory"
|
242 | | - ignoreCase="true"
|
243 | | - words="stopwords.txt"
|
244 | | - enablePositionIncrements="true"
|
245 | | - />
|
246 | | - <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
|
247 | | - <filter class="solr.LowerCaseFilterFactory"/>
|
248 | | - <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
|
249 | | - </analyzer>
|
250 | | - </fieldType>
|
251 | | -
|
252 | | -
|
253 | | - <!-- Less flexible matching, but less false matches. Probably not ideal for product names,
|
254 | | - but may be good for SKUs. Can insert dashes in the wrong place and still match. -->
|
255 | | - <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100" >
|
256 | | - <analyzer>
|
257 | | - <tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
258 | | - <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
|
259 | | - <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
|
260 | | - <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
|
261 | | - <filter class="solr.LowerCaseFilterFactory"/>
|
262 | | - <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
|
263 | | - <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes
|
264 | | - possible with WordDelimiterFilter in conjuncton with stemming. -->
|
265 | | - <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
|
266 | | - </analyzer>
|
267 | | - </fieldType>
|
268 | | -
|
269 | | -
|
270 | | - <!-- A general unstemmed text field - good if one does not know the language of the field -->
|
271 | | - <fieldType name="textgen" class="solr.TextField" positionIncrementGap="100">
|
272 | | - <analyzer type="index">
|
273 | | - <tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
274 | | - <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
|
275 | | - <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
|
276 | | - <filter class="solr.LowerCaseFilterFactory"/>
|
277 | | - </analyzer>
|
278 | | - <analyzer type="query">
|
279 | | - <tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
280 | | - <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
|
281 | | - <filter class="solr.StopFilterFactory"
|
282 | | - ignoreCase="true"
|
283 | | - words="stopwords.txt"
|
284 | | - enablePositionIncrements="true"
|
285 | | - />
|
286 | | - <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
|
287 | | - <filter class="solr.LowerCaseFilterFactory"/>
|
288 | | - </analyzer>
|
289 | | - </fieldType>
|
290 | | -
|
291 | | -
|
292 | | - <!-- A general unstemmed text field that indexes tokens normally and also
|
293 | | - reversed (via ReversedWildcardFilterFactory), to enable more efficient
|
294 | | - leading wildcard queries. -->
|
295 | | - <fieldType name="text_rev" class="solr.TextField" positionIncrementGap="100">
|
296 | | - <analyzer type="index">
|
297 | | - <tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
298 | | - <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
|
299 | | - <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
|
300 | | - <filter class="solr.LowerCaseFilterFactory"/>
|
301 | | - <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
|
302 | | - maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
|
303 | | - </analyzer>
|
304 | | - <analyzer type="query">
|
305 | | - <tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
306 | | - <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
|
307 | | - <filter class="solr.StopFilterFactory"
|
308 | | - ignoreCase="true"
|
309 | | - words="stopwords.txt"
|
310 | | - enablePositionIncrements="true"
|
311 | | - />
|
312 | | - <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>
|
313 | | - <filter class="solr.LowerCaseFilterFactory"/>
|
314 | | - </analyzer>
|
315 | | - </fieldType>
|
316 | | -
|
317 | | - <!-- charFilter + WhitespaceTokenizer -->
|
318 | | - <!--
|
319 | | - <fieldType name="textCharNorm" class="solr.TextField" positionIncrementGap="100" >
|
320 | | - <analyzer>
|
321 | | - <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
|
322 | | - <tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
323 | | - </analyzer>
|
324 | | - </fieldType>
|
325 | | - -->
|
326 | | -
|
327 | | - <!-- This is an example of using the KeywordTokenizer along
|
328 | | - With various TokenFilterFactories to produce a sortable field
|
329 | | - that does not include some properties of the source text
|
330 | | - -->
|
331 | | - <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">
|
332 | | - <analyzer>
|
333 | | - <!-- KeywordTokenizer does no actual tokenizing, so the entire
|
334 | | - input string is preserved as a single token
|
335 | | - -->
|
336 | | - <tokenizer class="solr.KeywordTokenizerFactory"/>
|
337 | | - <!-- The LowerCase TokenFilter does what you expect, which can be
|
338 | | - when you want your sorting to be case insensitive
|
339 | | - -->
|
340 | | - <filter class="solr.LowerCaseFilterFactory" />
|
341 | | - <!-- The TrimFilter removes any leading or trailing whitespace -->
|
342 | | - <filter class="solr.TrimFilterFactory" />
|
343 | | - <!-- The PatternReplaceFilter gives you the flexibility to use
|
344 | | - Java Regular expression to replace any sequence of characters
|
345 | | - matching a pattern with an arbitrary replacement string,
|
346 | | - which may include back references to portions of the original
|
347 | | - string matched by the pattern.
|
348 | | -
|
349 | | - See the Java Regular Expression documentation for more
|
350 | | - information on pattern and replacement string syntax.
|
351 | | -
|
352 | | - http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/package-summary.html
|
353 | | - -->
|
354 | | - <filter class="solr.PatternReplaceFilterFactory"
|
355 | | - pattern="([^a-z])" replacement="" replace="all"
|
356 | | - />
|
357 | | - </analyzer>
|
358 | | - </fieldType>
|
359 | | -
|
360 | | - <fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" >
|
361 | | - <analyzer>
|
362 | | - <tokenizer class="solr.StandardTokenizerFactory"/>
|
363 | | - <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
|
364 | | - </analyzer>
|
365 | | - </fieldtype>
|
366 | | -
|
367 | | - <fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" >
|
368 | | - <analyzer>
|
369 | | - <tokenizer class="solr.WhitespaceTokenizerFactory"/>
|
370 | | - <!--
|
371 | | - The DelimitedPayloadTokenFilter can put payloads on tokens... for example,
|
372 | | - a token of "foo|1.4" would be indexed as "foo" with a payload of 1.4f
|
373 | | - Attributes of the DelimitedPayloadTokenFilterFactory :
|
374 | | - "delimiter" - a one character delimiter. Default is | (pipe)
|
375 | | - "encoder" - how to encode the following value into a playload
|
376 | | - float -> org.apache.lucene.analysis.payloads.FloatEncoder,
|
377 | | - integer -> o.a.l.a.p.IntegerEncoder
|
378 | | - identity -> o.a.l.a.p.IdentityEncoder
|
379 | | - Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor.
|
380 | | - -->
|
381 | | - <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>
|
382 | | - </analyzer>
|
383 | | - </fieldtype>
|
384 | | -
|
385 | | - <!-- lowercases the entire field value, keeping it as a single token. -->
|
386 | | - <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
|
387 | | - <analyzer>
|
388 | | - <tokenizer class="solr.KeywordTokenizerFactory"/>
|
389 | | - <filter class="solr.LowerCaseFilterFactory" />
|
390 | | - </analyzer>
|
391 | | - </fieldType>
|
392 | | -
|
393 | | -
|
394 | | - <!-- Case Insensitive String-->
|
395 | | - <fieldType name="string_ci" class="solr.TextField"
|
396 | | - sortMissingLast="true" omitNorms="true">
|
397 | | - <analyzer>
|
398 | | - <tokenizer class="solr.LowerCaseTokenizerFactory"/>
|
399 | | - <filter class="solr.LowerCaseFilterFactory" />
|
400 | | - </analyzer>
|
401 | | - </fieldType>
|
402 | | -
|
403 | | - <!-- since fields of this type are by default not stored or indexed,
|
404 | | - any data added to them will be ignored outright. -->
|
405 | | - <fieldtype name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" />
|
406 | | -
|
407 | | - </types>
|
408 | | -
|
409 | | -
|
410 | | - <fields>
|
411 | | - <!-- Valid attributes for fields:
|
412 | | - name: mandatory - the name for the field
|
413 | | - type: mandatory - the name of a previously defined type from the
|
414 | | - <types> section
|
415 | | - indexed: true if this field should be indexed (searchable or sortable)
|
416 | | - stored: true if this field should be retrievable
|
417 | | - compressed: [false] if this field should be stored using gzip compression
|
418 | | - (this will only apply if the field type is compressable; among
|
419 | | - the standard field types, only TextField and StrField are)
|
420 | | - multiValued: true if this field may contain multiple values per document
|
421 | | - omitNorms: (expert) set to true to omit the norms associated with
|
422 | | - this field (this disables length normalization and index-time
|
423 | | - boosting for the field, and saves some memory). Only full-text
|
424 | | - fields or fields that need an index-time boost need norms.
|
425 | | - termVectors: [false] set to true to store the term vector for a
|
426 | | - given field.
|
427 | | - When using MoreLikeThis, fields used for similarity should be
|
428 | | - stored for best performance.
|
429 | | - termPositions: Store position information with the term vector.
|
430 | | - This will increase storage costs.
|
431 | | - termOffsets: Store offset information with the term vector. This
|
432 | | - will increase storage costs.
|
433 | | - default: a value that should be used if no value is specified
|
434 | | - when adding a document.
|
435 | | - -->
|
436 | | -
|
437 | | - <field name="pagetitle" type="string" indexed="true" stored="true" required="true" />
|
438 | | - <field name="interwiki" type="string" indexed="true" stored="true" />
|
439 | | - <field name="dbkey" type="string" indexed="true" stored="true" required="true" />
|
440 | | - <field name="subobjectname" type="string" indexed="true" stored="true" />
|
441 | | - <field name="namespace" type="int" indexed="true" stored="true" required="true" />
|
442 | | -
|
443 | | - <field name="titleen" type="text" indexed="true" stored="true" />
|
444 | | - <field name="name" type="text" indexed="true" stored="true" />
|
445 | | - <field name="von" type="date" indexed="true" stored="true" />
|
446 | | - <field name="bis" type="date" indexed="true" stored="true" />
|
447 | | - <field name="category" type="text" indexed="true" stored="true" />
|
448 | | - <field name="id" type="sint" indexed="true" stored="true" />
|
449 | | - <field name="institution" type="text" indexed="true" stored="true" multiValued="true"/>
|
450 | | - <field name="person" type="text" indexed="true" stored="true" multiValued="true"/>
|
451 | | - <field name="inhaltde" type="text" indexed="true" stored="true"/>
|
452 | | - <field name="inhalten" type="text" indexed="true" stored="true"/>
|
453 | | - <field name="inhaltfr" type="text" indexed="true" stored="true"/>
|
454 | | - <field name="stichworte" type="text" indexed="true" stored="true" multiValued="true"/>
|
455 | | - <field name="schlagworte" type="text" indexed="true" stored="true" multiValued="true"/>
|
456 | | - <field name="rnr" type="sint" indexed="true" stored="true" multiValued="true"/>
|
457 | | - <field name="orgtyp" type="text" indexed="true" stored="true"/>
|
458 | | - <field name="shortname" type="text" indexed="true" stored="true"/>
|
459 | | - <field name="subject" type="text" indexed="true" stored="true"/>
|
460 | | - <field name="homepage" type="text" indexed="true" stored="true"/>
|
461 | | - <field name="ort" type="text" indexed="true" stored="true"/>
|
462 | | - <field name="land" type="text" indexed="true" stored="true"/>
|
463 | | - <field name="maindept" type="text" indexed="true" stored="true"/>
|
464 | | - <field name="higherdept" type="text" indexed="true" stored="true"/>
|
465 | | - <field name="text" type="text" indexed="true" stored="true" multiValued="true"/>
|
466 | | -
|
467 | | -
|
468 | | - <!-- Common metadata fields, named specifically to match up with
|
469 | | - SolrCell metadata when parsing rich documents such as Word, PDF.
|
470 | | - Some fields are multiValued only because Tika currently may return
|
471 | | - multiple values for them.
|
472 | | - -->
|
473 | | - <field name="title" type="text" indexed="true" stored="true" multiValued="true"/>
|
474 | | - <field name="description" type="text" indexed="true" stored="true"/>
|
475 | | - <field name="comments" type="text" indexed="true" stored="true"/>
|
476 | | - <field name="author" type="textgen" indexed="true" stored="true"/>
|
477 | | - <field name="keywords" type="textgen" indexed="true" stored="true"/>
|
478 | | - <field name="content_type" type="string" indexed="true" stored="true" multiValued="true"/>
|
479 | | - <field name="last_modified" type="date" indexed="true" stored="true"/>
|
480 | | - <field name="links" type="string" indexed="true" stored="true" multiValued="true"/>
|
481 | | -
|
482 | | -
|
483 | | - <!-- catchall field, containing all other searchable text fields (implemented
|
484 | | - via copyField further on in this schema -->
|
485 | | - <!-- <field name="text" type="text" indexed="true" stored="false" multiValued="true"/>
|
486 | | - <!-- catchall text field that indexes tokens both normally and in reverse for efficient
|
487 | | - leading wildcard queries. -->
|
488 | | - <field name="text_rev" type="text_rev" indexed="true" stored="false" multiValued="true"/>
|
489 | | -
|
490 | | - <!-- non-tokenized version of manufacturer to make it easier to sort or group
|
491 | | - results by manufacturer. copied from "manu" via copyField -->
|
492 | | - <field name="manu_exact" type="string" indexed="true" stored="false"/>
|
493 | | -
|
494 | | - <field name="payloads" type="payloads" indexed="true" stored="true"/>
|
495 | | -
|
496 | | - <!-- Uncommenting the following will create a "timestamp" field using
|
497 | | - a default value of "NOW" to indicate when each document was indexed.
|
498 | | - -->
|
499 | | - <!--
|
500 | | - <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
|
501 | | - -->
|
502 | | -
|
503 | | -
|
504 | | - <!-- Dynamic field definitions. If a field name is not found, dynamicFields
|
505 | | - will be used if the name matches any of the patterns.
|
506 | | - RESTRICTION: the glob-like pattern in the name attribute must have
|
507 | | - a "*" only at the start or the end.
|
508 | | - EXAMPLE: name="*_i" will match any field ending in _i (like myid_i, z_i)
|
509 | | - Longer patterns will be matched first. if equal size patterns
|
510 | | - both match, the first appearing in the schema will be used. -->
|
511 | | - <dynamicField name="*_i" type="int" indexed="true" stored="true" multiValued="true"/>
|
512 | | - <dynamicField name="*_s" type="string_ci" indexed="true" stored="true" multiValued="true"/>
|
513 | | - <dynamicField name="*_l" type="long" indexed="true" stored="true" multiValued="true"/>
|
514 | | - <dynamicField name="*_t" type="text" indexed="true" stored="true" multiValued="true"/>
|
515 | | - <dynamicField name="*_b" type="boolean" indexed="true" stored="true" multiValued="true"/>
|
516 | | - <dynamicField name="*_f" type="float" indexed="true" stored="true" multiValued="true"/>
|
517 | | - <dynamicField name="*_d" type="double" indexed="true" stored="true" multiValued="true"/>
|
518 | | - <dynamicField name="*_dt" type="date" indexed="true" stored="true" multiValued="true"/>
|
519 | | -
|
520 | | - <!-- Fields need for Sorting Multivalued Fields -->
|
521 | | - <dynamicField name="*_tmin" type="alphaOnlySort" indexed="true" />
|
522 | | - <dynamicField name="*_tmax" type="alphaOnlySort" indexed="true" />
|
523 | | - <dynamicField name="*_smin" type="alphaOnlySort" indexed="true" />
|
524 | | - <dynamicField name="*_smax" type="alphaOnlySort" indexed="true" />
|
525 | | - <dynamicField name="*_imin" type="int" indexed="true" />
|
526 | | - <dynamicField name="*_imax" type="int" indexed="true" />
|
527 | | - <dynamicField name="*_dtmin" type="date" indexed="true"/>
|
528 | | - <dynamicField name="*_dtmax" type="date" indexed="true"/>
|
529 | | -
|
530 | | -
|
531 | | - <!-- some trie-coded dynamic fields for faster range queries -->
|
532 | | - <dynamicField name="*_ti" type="tint" indexed="true" stored="true" />
|
533 | | - <dynamicField name="*_tl" type="tlong" indexed="true" stored="true" />
|
534 | | - <dynamicField name="*_tf" type="tfloat" indexed="true" stored="true" />
|
535 | | - <dynamicField name="*_td" type="tdouble" indexed="true" stored="true" />
|
536 | | - <dynamicField name="*_tdt" type="tdate" indexed="true" stored="true" />
|
537 | | -
|
538 | | - <!-- Geo Coordinates -->
|
539 | | - <dynamicField name="*_lat" type="sdouble" indexed="true" stored="true" />
|
540 | | - <dynamicField name="*_lng" type="sdouble" indexed="true" stored="true" />
|
541 | | -
|
542 | | - <dynamicField name="*_pi" type="pint" indexed="true" stored="true" />
|
543 | | -
|
544 | | - <dynamicField name="ignored_*" type="ignored" multiValued="true"/>
|
545 | | - <dynamicField name="attr_*" type="textgen" indexed="true" stored="true" />
|
546 | | -
|
547 | | - <dynamicField name="random_*" type="random" />
|
548 | | -
|
549 | | - <!-- uncomment the following to ignore any fields that don't already match an existing
|
550 | | - field name or dynamic field, rather than reporting them as an error.
|
551 | | - alternately, change the type="ignored" to some other type e.g. "text" if you want
|
552 | | - unknown fields indexed and/or stored by default -->
|
553 | | - <!--dynamicField name="*" type="ignored" multiValued="true" /-->
|
554 | | -
|
555 | | - </fields>
|
556 | | -
|
557 | | - <!-- Field to use to determine and enforce document uniqueness.
|
558 | | - Unless this field is marked with required="false", it will be a required field
|
559 | | - -->
|
560 | | - <uniqueKey>pagetitle</uniqueKey>
|
561 | | -
|
562 | | - <!-- field for the QueryParser to use when an explicit fieldname is absent -->
|
563 | | - <defaultSearchField>text</defaultSearchField>
|
564 | | -
|
565 | | - <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
|
566 | | - <solrQueryParser defaultOperator="OR"/>
|
567 | | -
|
568 | | - <!-- copyField commands copy one field to another at the time a document
|
569 | | - is added to the index. It's used either to index the same field differently,
|
570 | | - or to add multiple fields to the same field for easier/faster searching. -->
|
571 | | -<!--
|
572 | | - <copyField source="cat" dest="text"/>
|
573 | | - <copyField source="name" dest="text"/>
|
574 | | - <copyField source="manu" dest="text"/>
|
575 | | - <copyField source="features" dest="text"/>
|
576 | | - <copyField source="includes" dest="text"/>
|
577 | | - <copyField source="manu" dest="manu_exact"/>
|
578 | | - <!-- Above, multiple source fields are copied to the [text] field.
|
579 | | - Another way to map multiple source fields to the same
|
580 | | - destination field is to use the dynamic field syntax.
|
581 | | - copyField also supports a maxChars to copy setting. -->
|
582 | | -
|
583 | | - <copyField source="*" dest="text" maxChars="5000"/>
|
584 | | - <copyField source="pagetitle" dest="title"/>
|
585 | | -
|
586 | | - <!-- copy name to alphaNameSort, a field designed for sorting by name -->
|
587 | | - <!-- <copyField source="name" dest="alphaNameSort"/> -->
|
588 | | -
|
589 | | -
|
590 | | - <!-- Similarity is the scoring routine for each document vs. a query.
|
591 | | - A custom similarity may be specified here, but the default is fine
|
592 | | - for most applications. -->
|
593 | | - <!-- <similarity class="org.apache.lucene.search.DefaultSimilarity"/> -->
|
594 | | - <!-- ... OR ...
|
595 | | - Specify a SimilarityFactory class name implementation
|
596 | | - allowing parameters to be used.
|
597 | | - -->
|
598 | | - <!--
|
599 | | - <similarity class="com.example.solr.CustomSimilarityFactory">
|
600 | | - <str name="paramkey">param value</str>
|
601 | | - </similarity>
|
602 | | - -->
|
603 | | -
|
604 | | -
|
605 | | -</schema>
|
| 2 | +<?xml version="1.0" encoding="UTF-8" ?> |
| 3 | +<!-- |
| 4 | + Licensed to the Apache Software Foundation (ASF) under one or more |
| 5 | + contributor license agreements. See the NOTICE file distributed with |
| 6 | + this work for additional information regarding copyright ownership. |
| 7 | + The ASF licenses this file to You under the Apache License, Version 2.0 |
| 8 | + (the "License"); you may not use this file except in compliance with |
| 9 | + the License. You may obtain a copy of the License at |
| 10 | + |
| 11 | + http://www.apache.org/licenses/LICENSE-2.0 |
| 12 | + |
| 13 | + Unless required by applicable law or agreed to in writing, software |
| 14 | + distributed under the License is distributed on an "AS IS" BASIS, |
| 15 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 16 | + See the License for the specific language governing permissions and |
| 17 | + limitations under the License. |
| 18 | +--> |
| 19 | + |
| 20 | +<!-- |
| 21 | + This is the Solr schema file. This file should be named "schema.xml" and |
| 22 | + should be in the conf directory under the solr home |
| 23 | + (i.e. ./solr/conf/schema.xml by default) |
| 24 | + or located where the classloader for the Solr webapp can find it. |
| 25 | + |
| 26 | + This example schema is the recommended starting point for users. |
| 27 | + It should be kept correct and concise, usable out-of-the-box. |
| 28 | + |
| 29 | + For more information, on how to customize this file, please see |
| 30 | + http://wiki.apache.org/solr/SchemaXml |
| 31 | + |
| 32 | + PERFORMANCE NOTE: this schema includes many optional features and should not |
| 33 | + be used for benchmarking. To improve performance one could |
| 34 | + - set stored="false" for all fields possible (esp large fields) when you |
| 35 | + only need to search on the field but don't need to return the original |
| 36 | + value. |
| 37 | + - set indexed="false" if you don't need to search on the field, but only |
| 38 | + return the field as a result of searching on other indexed fields. |
| 39 | + - remove all unneeded copyField statements |
| 40 | + - for best index size and searching performance, set "index" to false |
| 41 | + for all general text fields, use copyField to copy them to the |
| 42 | + catchall "text" field, and use that for searching. |
| 43 | + - For maximum indexing performance, use the StreamingUpdateSolrServer |
| 44 | + java client. |
| 45 | + - Remember to run the JVM in server mode, and use a higher logging level |
| 46 | + that avoids logging every request |
| 47 | +--> |
| 48 | + |
| 49 | +<schema name="example" version="1.2"> |
| 50 | + <!-- attribute "name" is the name of this schema and is only used for display purposes. |
| 51 | + Applications should change this to reflect the nature of the search collection. |
| 52 | + version="1.2" is Solr's version number for the schema syntax and semantics. It should |
| 53 | + not normally be changed by applications. |
| 54 | + 1.0: multiValued attribute did not exist, all fields are multiValued by nature |
| 55 | + 1.1: multiValued attribute introduced, false by default |
| 56 | + 1.2: omitTermFreqAndPositions attribute introduced, true by default except for text fields. |
| 57 | + --> |
| 58 | + |
| 59 | + <types> |
| 60 | + <!-- field type definitions. The "name" attribute is |
| 61 | + just a label to be used by field definitions. The "class" |
| 62 | + attribute and any other attributes determine the real |
| 63 | + behavior of the fieldType. |
| 64 | + Class names starting with "solr" refer to java classes in the |
| 65 | + org.apache.solr.analysis package. |
| 66 | + --> |
| 67 | + |
| 68 | + <!-- The StrField type is not analyzed, but indexed/stored verbatim. |
| 69 | + - StrField and TextField support an optional compressThreshold which |
| 70 | + limits compression (if enabled in the derived fields) to values which |
| 71 | + exceed a certain size (in characters). |
| 72 | + --> |
| 73 | + <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> |
| 74 | + |
| 75 | + <!-- boolean type: "true" or "false" --> |
| 76 | + <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/> |
| 77 | + <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings --> |
| 78 | + <fieldtype name="binary" class="solr.BinaryField"/> |
| 79 | + |
| 80 | + <!-- The optional sortMissingLast and sortMissingFirst attributes are |
| 81 | + currently supported on types that are sorted internally as strings. |
| 82 | + This includes "string","boolean","sint","slong","sfloat","sdouble","pdate" |
| 83 | + - If sortMissingLast="true", then a sort on this field will cause documents |
| 84 | + without the field to come after documents with the field, |
| 85 | + regardless of the requested sort order (asc or desc). |
| 86 | + - If sortMissingFirst="true", then a sort on this field will cause documents |
| 87 | + without the field to come before documents with the field, |
| 88 | + regardless of the requested sort order. |
| 89 | + - If sortMissingLast="false" and sortMissingFirst="false" (the default), |
| 90 | + then default lucene sorting will be used which places docs without the |
| 91 | + field first in an ascending sort and last in a descending sort. |
| 92 | + --> |
| 93 | + |
| 94 | + <!-- |
| 95 | + Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types. |
| 96 | + --> |
| 97 | + <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/> |
| 98 | + <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/> |
| 99 | + <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/> |
| 100 | + <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/> |
| 101 | + |
| 102 | + <!-- |
| 103 | + Numeric field types that index each value at various levels of precision |
| 104 | + to accelerate range queries when the number of values between the range |
| 105 | + endpoints is large. See the javadoc for NumericRangeQuery for internal |
| 106 | + implementation details. |
| 107 | + |
| 108 | + Smaller precisionStep values (specified in bits) will lead to more tokens |
| 109 | + indexed per value, slightly larger index size, and faster range queries. |
| 110 | + A precisionStep of 0 disables indexing at different precision levels. |
| 111 | + --> |
| 112 | + <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> |
| 113 | + <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> |
| 114 | + <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> |
| 115 | + <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> |
| 116 | + |
| 117 | + <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and |
| 118 | + is a more restricted form of the canonical representation of dateTime |
| 119 | + http://www.w3.org/TR/xmlschema-2/#dateTime |
| 120 | + The trailing "Z" designates UTC time and is mandatory. |
| 121 | + Optional fractional seconds are allowed: 1995-12-31T23:59:59.999Z |
| 122 | + All other components are mandatory. |
| 123 | + |
| 124 | + Expressions can also be used to denote calculations that should be |
| 125 | + performed relative to "NOW" to determine the value, ie... |
| 126 | + |
| 127 | + NOW/HOUR |
| 128 | + ... Round to the start of the current hour |
| 129 | + NOW-1DAY |
| 130 | + ... Exactly 1 day prior to now |
| 131 | + NOW/DAY+6MONTHS+3DAYS |
| 132 | + ... 6 months and 3 days in the future from the start of |
| 133 | + the current day |
| 134 | + |
| 135 | + Consult the DateField javadocs for more information. |
| 136 | + |
| 137 | + Note: For faster range queries, consider the tdate type |
| 138 | + --> |
| 139 | + <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/> |
| 140 | + |
| 141 | + <!-- A Trie based date field for faster date range queries and date faceting. --> |
| 142 | + <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/> |
| 143 | + |
| 144 | + |
| 145 | + <!-- |
| 146 | + Note: |
| 147 | + These should only be used for compatibility with existing indexes (created with older Solr versions) |
| 148 | + or if "sortMissingFirst" or "sortMissingLast" functionality is needed. Use Trie based fields instead. |
| 149 | + |
| 150 | + Plain numeric field types that store and index the text |
| 151 | + value verbatim (and hence don't support range queries, since the |
| 152 | + lexicographic ordering isn't equal to the numeric ordering) |
| 153 | + --> |
| 154 | + <fieldType name="pint" class="solr.IntField" omitNorms="true"/> |
| 155 | + <fieldType name="plong" class="solr.LongField" omitNorms="true"/> |
| 156 | + <fieldType name="pfloat" class="solr.FloatField" omitNorms="true"/> |
| 157 | + <fieldType name="pdouble" class="solr.DoubleField" omitNorms="true"/> |
| 158 | + <fieldType name="pdate" class="solr.DateField" sortMissingLast="true" omitNorms="true"/> |
| 159 | + |
| 160 | + |
| 161 | + <!-- |
| 162 | + Note: |
| 163 | + These should only be used for compatibility with existing indexes (created with older Solr versions) |
| 164 | + or if "sortMissingFirst" or "sortMissingLast" functionality is needed. Use Trie based fields instead. |
| 165 | + |
| 166 | + Numeric field types that manipulate the value into |
| 167 | + a string value that isn't human-readable in its internal form, |
| 168 | + but with a lexicographic ordering the same as the numeric ordering, |
| 169 | + so that range queries work correctly. |
| 170 | + --> |
| 171 | + <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/> |
| 172 | + <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/> |
| 173 | + <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/> |
| 174 | + <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/> |
| 175 | + |
| 176 | + |
| 177 | + <!-- The "RandomSortField" is not used to store or search any |
| 178 | + data. You can declare fields of this type it in your schema |
| 179 | + to generate pseudo-random orderings of your docs for sorting |
| 180 | + purposes. The ordering is generated based on the field name |
| 181 | + and the version of the index, As long as the index version |
| 182 | + remains unchanged, and the same field name is reused, |
| 183 | + the ordering of the docs will be consistent. |
| 184 | + If you want different psuedo-random orderings of documents, |
| 185 | + for the same version of the index, use a dynamicField and |
| 186 | + change the name |
| 187 | + --> |
| 188 | + <fieldType name="random" class="solr.RandomSortField" indexed="true" /> |
| 189 | + |
| 190 | + <!-- solr.TextField allows the specification of custom text analyzers |
| 191 | + specified as a tokenizer and a list of token filters. Different |
| 192 | + analyzers may be specified for indexing and querying. |
| 193 | + |
| 194 | + The optional positionIncrementGap puts space between multiple fields of |
| 195 | + this type on the same document, with the purpose of preventing false phrase |
| 196 | + matching across fields. |
| 197 | + |
| 198 | + For more info on customizing your analyzer chain, please see |
| 199 | + http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters |
| 200 | + --> |
| 201 | + |
| 202 | + <!-- One can also specify an existing Analyzer class that has a |
| 203 | + default constructor via the class attribute on the analyzer element |
| 204 | + <fieldType name="text_greek" class="solr.TextField"> |
| 205 | + <analyzer class="org.apache.lucene.analysis.el.GreekAnalyzer"/> |
| 206 | + </fieldType> |
| 207 | + --> |
| 208 | + |
| 209 | + <!-- A text field that only splits on whitespace for exact matching of words --> |
| 210 | + <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100"> |
| 211 | + <analyzer> |
| 212 | + <tokenizer class="solr.WhitespaceTokenizerFactory"/> |
| 213 | + </analyzer> |
| 214 | + </fieldType> |
| 215 | + |
| 216 | + <!-- A text field that uses WordDelimiterFilter to enable splitting and matching of |
| 217 | + words on case-change, alpha numeric boundaries, and non-alphanumeric chars, |
| 218 | + so that a query of "wifi" or "wi fi" could match a document containing "Wi-Fi". |
| 219 | + Synonyms and stopwords are customized by external files, and stemming is enabled. |
| 220 | + --> |
| 221 | + <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> |
| 222 | + <analyzer type="index"> |
| 223 | + <tokenizer class="solr.WhitespaceTokenizerFactory"/> |
| 224 | + <!-- in this example, we will only use synonyms at query time |
| 225 | + <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> |
| 226 | + --> |
| 227 | + <!-- Case insensitive stop word removal. |
| 228 | + add enablePositionIncrements=true in both the index and query |
| 229 | + analyzers to leave a 'gap' for more accurate phrase queries. |
| 230 | + --> |
| 231 | + <filter class="solr.StopFilterFactory" |
| 232 | + ignoreCase="true" |
| 233 | + words="stopwords.txt" |
| 234 | + enablePositionIncrements="true" |
| 235 | + /> |
| 236 | + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> |
| 237 | + <filter class="solr.LowerCaseFilterFactory"/> |
| 238 | + <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> |
| 239 | + </analyzer> |
| 240 | + <analyzer type="query"> |
| 241 | + <tokenizer class="solr.WhitespaceTokenizerFactory"/> |
| 242 | + <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> |
| 243 | + <filter class="solr.StopFilterFactory" |
| 244 | + ignoreCase="true" |
| 245 | + words="stopwords.txt" |
| 246 | + enablePositionIncrements="true" |
| 247 | + /> |
| 248 | + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> |
| 249 | + <filter class="solr.LowerCaseFilterFactory"/> |
| 250 | + <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> |
| 251 | + </analyzer> |
| 252 | + </fieldType> |
| 253 | + |
| 254 | + |
| 255 | + <!-- Less flexible matching, but less false matches. Probably not ideal for product names, |
| 256 | + but may be good for SKUs. Can insert dashes in the wrong place and still match. --> |
| 257 | + <fieldType name="textTight" class="solr.TextField" positionIncrementGap="100" > |
| 258 | + <analyzer> |
| 259 | + <tokenizer class="solr.WhitespaceTokenizerFactory"/> |
| 260 | + <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/> |
| 261 | + <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> |
| 262 | + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/> |
| 263 | + <filter class="solr.LowerCaseFilterFactory"/> |
| 264 | + <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> |
| 265 | + <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes |
| 266 | + possible with WordDelimiterFilter in conjuncton with stemming. --> |
| 267 | + <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> |
| 268 | + </analyzer> |
| 269 | + </fieldType> |
| 270 | + |
| 271 | + |
| 272 | + <!-- A general unstemmed text field - good if one does not know the language of the field --> |
| 273 | + <fieldType name="textgen" class="solr.TextField" positionIncrementGap="100"> |
| 274 | + <analyzer type="index"> |
| 275 | + <tokenizer class="solr.WhitespaceTokenizerFactory"/> |
| 276 | + <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> |
| 277 | + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/> |
| 278 | + <filter class="solr.LowerCaseFilterFactory"/> |
| 279 | + </analyzer> |
| 280 | + <analyzer type="query"> |
| 281 | + <tokenizer class="solr.WhitespaceTokenizerFactory"/> |
| 282 | + <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> |
| 283 | + <filter class="solr.StopFilterFactory" |
| 284 | + ignoreCase="true" |
| 285 | + words="stopwords.txt" |
| 286 | + enablePositionIncrements="true" |
| 287 | + /> |
| 288 | + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/> |
| 289 | + <filter class="solr.LowerCaseFilterFactory"/> |
| 290 | + </analyzer> |
| 291 | + </fieldType> |
| 292 | + |
| 293 | + |
| 294 | + <!-- A general unstemmed text field that indexes tokens normally and also |
| 295 | + reversed (via ReversedWildcardFilterFactory), to enable more efficient |
| 296 | + leading wildcard queries. --> |
| 297 | + <fieldType name="text_rev" class="solr.TextField" positionIncrementGap="100"> |
| 298 | + <analyzer type="index"> |
| 299 | + <tokenizer class="solr.WhitespaceTokenizerFactory"/> |
| 300 | + <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> |
| 301 | + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/> |
| 302 | + <filter class="solr.LowerCaseFilterFactory"/> |
| 303 | + <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" |
| 304 | + maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/> |
| 305 | + </analyzer> |
| 306 | + <analyzer type="query"> |
| 307 | + <tokenizer class="solr.WhitespaceTokenizerFactory"/> |
| 308 | + <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> |
| 309 | + <filter class="solr.StopFilterFactory" |
| 310 | + ignoreCase="true" |
| 311 | + words="stopwords.txt" |
| 312 | + enablePositionIncrements="true" |
| 313 | + /> |
| 314 | + <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/> |
| 315 | + <filter class="solr.LowerCaseFilterFactory"/> |
| 316 | + </analyzer> |
| 317 | + </fieldType> |
| 318 | + |
| 319 | + <!-- charFilter + WhitespaceTokenizer --> |
| 320 | + <!-- |
| 321 | + <fieldType name="textCharNorm" class="solr.TextField" positionIncrementGap="100" > |
| 322 | + <analyzer> |
| 323 | + <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> |
| 324 | + <tokenizer class="solr.WhitespaceTokenizerFactory"/> |
| 325 | + </analyzer> |
| 326 | + </fieldType> |
| 327 | + --> |
| 328 | + |
| 329 | + <!-- This is an example of using the KeywordTokenizer along |
| 330 | + With various TokenFilterFactories to produce a sortable field |
| 331 | + that does not include some properties of the source text |
| 332 | + --> |
| 333 | + <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true"> |
| 334 | + <analyzer> |
| 335 | + <!-- KeywordTokenizer does no actual tokenizing, so the entire |
| 336 | + input string is preserved as a single token |
| 337 | + --> |
| 338 | + <tokenizer class="solr.KeywordTokenizerFactory"/> |
| 339 | + <!-- The LowerCase TokenFilter does what you expect, which can be |
| 340 | + when you want your sorting to be case insensitive |
| 341 | + --> |
| 342 | + <filter class="solr.LowerCaseFilterFactory" /> |
| 343 | + <!-- The TrimFilter removes any leading or trailing whitespace --> |
| 344 | + <filter class="solr.TrimFilterFactory" /> |
| 345 | + <!-- The PatternReplaceFilter gives you the flexibility to use |
| 346 | + Java Regular expression to replace any sequence of characters |
| 347 | + matching a pattern with an arbitrary replacement string, |
| 348 | + which may include back references to portions of the original |
| 349 | + string matched by the pattern. |
| 350 | + |
| 351 | + See the Java Regular Expression documentation for more |
| 352 | + information on pattern and replacement string syntax. |
| 353 | + |
| 354 | + http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/package-summary.html |
| 355 | + --> |
| 356 | + <filter class="solr.PatternReplaceFilterFactory" |
| 357 | + pattern="([^a-z])" replacement="" replace="all" |
| 358 | + /> |
| 359 | + </analyzer> |
| 360 | + </fieldType> |
| 361 | + |
| 362 | + <fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" > |
| 363 | + <analyzer> |
| 364 | + <tokenizer class="solr.StandardTokenizerFactory"/> |
| 365 | + <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/> |
| 366 | + </analyzer> |
| 367 | + </fieldtype> |
| 368 | + |
| 369 | + <fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" > |
| 370 | + <analyzer> |
| 371 | + <tokenizer class="solr.WhitespaceTokenizerFactory"/> |
| 372 | + <!-- |
| 373 | + The DelimitedPayloadTokenFilter can put payloads on tokens... for example, |
| 374 | + a token of "foo|1.4" would be indexed as "foo" with a payload of 1.4f |
| 375 | + Attributes of the DelimitedPayloadTokenFilterFactory : |
| 376 | + "delimiter" - a one character delimiter. Default is | (pipe) |
| 377 | + "encoder" - how to encode the following value into a playload |
| 378 | + float -> org.apache.lucene.analysis.payloads.FloatEncoder, |
| 379 | + integer -> o.a.l.a.p.IntegerEncoder |
| 380 | + identity -> o.a.l.a.p.IdentityEncoder |
| 381 | + Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor. |
| 382 | + --> |
| 383 | + <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/> |
| 384 | + </analyzer> |
| 385 | + </fieldtype> |
| 386 | + |
| 387 | + <!-- lowercases the entire field value, keeping it as a single token. --> |
| 388 | + <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100"> |
| 389 | + <analyzer> |
| 390 | + <tokenizer class="solr.KeywordTokenizerFactory"/> |
| 391 | + <filter class="solr.LowerCaseFilterFactory" /> |
| 392 | + </analyzer> |
| 393 | + </fieldType> |
| 394 | + |
| 395 | + |
| 396 | + <!-- Case Insensitive String--> |
| 397 | + <fieldType name="string_ci" class="solr.TextField" |
| 398 | + sortMissingLast="true" omitNorms="true"> |
| 399 | + <analyzer> |
| 400 | + <tokenizer class="solr.LowerCaseTokenizerFactory"/> |
| 401 | + <filter class="solr.LowerCaseFilterFactory" /> |
| 402 | + </analyzer> |
| 403 | + </fieldType> |
| 404 | + |
| 405 | + <!-- since fields of this type are by default not stored or indexed, |
| 406 | + any data added to them will be ignored outright. --> |
| 407 | + <fieldtype name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" /> |
| 408 | + |
| 409 | + </types> |
| 410 | + |
| 411 | + |
| 412 | + <fields> |
| 413 | + <!-- Valid attributes for fields: |
| 414 | + name: mandatory - the name for the field |
| 415 | + type: mandatory - the name of a previously defined type from the |
| 416 | + <types> section |
| 417 | + indexed: true if this field should be indexed (searchable or sortable) |
| 418 | + stored: true if this field should be retrievable |
| 419 | + compressed: [false] if this field should be stored using gzip compression |
| 420 | + (this will only apply if the field type is compressable; among |
| 421 | + the standard field types, only TextField and StrField are) |
| 422 | + multiValued: true if this field may contain multiple values per document |
| 423 | + omitNorms: (expert) set to true to omit the norms associated with |
| 424 | + this field (this disables length normalization and index-time |
| 425 | + boosting for the field, and saves some memory). Only full-text |
| 426 | + fields or fields that need an index-time boost need norms. |
| 427 | + termVectors: [false] set to true to store the term vector for a |
| 428 | + given field. |
| 429 | + When using MoreLikeThis, fields used for similarity should be |
| 430 | + stored for best performance. |
| 431 | + termPositions: Store position information with the term vector. |
| 432 | + This will increase storage costs. |
| 433 | + termOffsets: Store offset information with the term vector. This |
| 434 | + will increase storage costs. |
| 435 | + default: a value that should be used if no value is specified |
| 436 | + when adding a document. |
| 437 | + --> |
| 438 | + |
| 439 | + <field name="pagetitle" type="string" indexed="true" stored="true" required="true" /> |
| 440 | + <field name="interwiki" type="string" indexed="true" stored="true" /> |
| 441 | + <field name="dbkey" type="string" indexed="true" stored="true" required="true" /> |
| 442 | + <field name="subobjectname" type="string" indexed="true" stored="true" /> |
| 443 | + <field name="namespace" type="int" indexed="true" stored="true" required="true" /> |
| 444 | + |
| 445 | + <field name="titleen" type="text" indexed="true" stored="true" /> |
| 446 | + <field name="name" type="text" indexed="true" stored="true" /> |
| 447 | + <field name="von" type="date" indexed="true" stored="true" /> |
| 448 | + <field name="bis" type="date" indexed="true" stored="true" /> |
| 449 | + <field name="category" type="text" indexed="true" stored="true" /> |
| 450 | + <field name="id" type="sint" indexed="true" stored="true" /> |
| 451 | + <field name="institution" type="text" indexed="true" stored="true" multiValued="true"/> |
| 452 | + <field name="person" type="text" indexed="true" stored="true" multiValued="true"/> |
| 453 | + <field name="inhaltde" type="text" indexed="true" stored="true"/> |
| 454 | + <field name="inhalten" type="text" indexed="true" stored="true"/> |
| 455 | + <field name="inhaltfr" type="text" indexed="true" stored="true"/> |
| 456 | + <field name="stichworte" type="text" indexed="true" stored="true" multiValued="true"/> |
| 457 | + <field name="schlagworte" type="text" indexed="true" stored="true" multiValued="true"/> |
| 458 | + <field name="rnr" type="sint" indexed="true" stored="true" multiValued="true"/> |
| 459 | + <field name="orgtyp" type="text" indexed="true" stored="true"/> |
| 460 | + <field name="shortname" type="text" indexed="true" stored="true"/> |
| 461 | + <field name="subject" type="text" indexed="true" stored="true"/> |
| 462 | + <field name="homepage" type="text" indexed="true" stored="true"/> |
| 463 | + <field name="ort" type="text" indexed="true" stored="true"/> |
| 464 | + <field name="land" type="text" indexed="true" stored="true"/> |
| 465 | + <field name="maindept" type="text" indexed="true" stored="true"/> |
| 466 | + <field name="higherdept" type="text" indexed="true" stored="true"/> |
| 467 | + <field name="text" type="text" indexed="true" stored="true" multiValued="true"/> |
| 468 | + |
| 469 | + |
| 470 | + <!-- Common metadata fields, named specifically to match up with |
| 471 | + SolrCell metadata when parsing rich documents such as Word, PDF. |
| 472 | + Some fields are multiValued only because Tika currently may return |
| 473 | + multiple values for them. |
| 474 | + --> |
| 475 | + <field name="title" type="text" indexed="true" stored="true" multiValued="true"/> |
| 476 | + <field name="description" type="text" indexed="true" stored="true"/> |
| 477 | + <field name="comments" type="text" indexed="true" stored="true"/> |
| 478 | + <field name="author" type="textgen" indexed="true" stored="true"/> |
| 479 | + <field name="keywords" type="textgen" indexed="true" stored="true"/> |
| 480 | + <field name="content_type" type="string" indexed="true" stored="true" multiValued="true"/> |
| 481 | + <field name="last_modified" type="date" indexed="true" stored="true"/> |
| 482 | + <field name="links" type="string" indexed="true" stored="true" multiValued="true"/> |
| 483 | + |
| 484 | + |
| 485 | + <!-- catchall field, containing all other searchable text fields (implemented |
| 486 | + via copyField further on in this schema --> |
| 487 | + <!-- <field name="text" type="text" indexed="true" stored="false" multiValued="true"/> |
| 488 | +--> |
| 489 | + <!-- catchall text field that indexes tokens both normally and in reverse for efficient |
| 490 | + leading wildcard queries. --> |
| 491 | + <field name="text_rev" type="text_rev" indexed="true" stored="false" multiValued="true"/> |
| 492 | + |
| 493 | + <!-- non-tokenized version of manufacturer to make it easier to sort or group |
| 494 | + results by manufacturer. copied from "manu" via copyField --> |
| 495 | + <field name="manu_exact" type="string" indexed="true" stored="false"/> |
| 496 | + |
| 497 | + <field name="payloads" type="payloads" indexed="true" stored="true"/> |
| 498 | + |
| 499 | + <!-- Uncommenting the following will create a "timestamp" field using |
| 500 | + a default value of "NOW" to indicate when each document was indexed. |
| 501 | + --> |
| 502 | + <!-- |
| 503 | + <field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/> |
| 504 | + --> |
| 505 | + |
| 506 | + |
| 507 | + <!-- Dynamic field definitions. If a field name is not found, dynamicFields |
| 508 | + will be used if the name matches any of the patterns. |
| 509 | + RESTRICTION: the glob-like pattern in the name attribute must have |
| 510 | + a "*" only at the start or the end. |
| 511 | + EXAMPLE: name="*_i" will match any field ending in _i (like myid_i, z_i) |
| 512 | + Longer patterns will be matched first. if equal size patterns |
| 513 | + both match, the first appearing in the schema will be used. --> |
| 514 | + <dynamicField name="*_i" type="int" indexed="true" stored="true" multiValued="true"/> |
| 515 | + <dynamicField name="*_s" type="string_ci" indexed="true" stored="true" multiValued="true"/> |
| 516 | + <dynamicField name="*_l" type="long" indexed="true" stored="true" multiValued="true"/> |
| 517 | + <dynamicField name="*_t" type="text" indexed="true" stored="true" multiValued="true"/> |
| 518 | + <dynamicField name="*_b" type="boolean" indexed="true" stored="true" multiValued="true"/> |
| 519 | + <dynamicField name="*_f" type="float" indexed="true" stored="true" multiValued="true"/> |
| 520 | + <dynamicField name="*_d" type="double" indexed="true" stored="true" multiValued="true"/> |
| 521 | + <dynamicField name="*_dt" type="date" indexed="true" stored="true" multiValued="true"/> |
| 522 | + |
| 523 | + <!-- Fields need for Sorting Multivalued Fields --> |
| 524 | + <dynamicField name="*_tmin" type="alphaOnlySort" indexed="true" /> |
| 525 | + <dynamicField name="*_tmax" type="alphaOnlySort" indexed="true" /> |
| 526 | + <dynamicField name="*_smin" type="alphaOnlySort" indexed="true" /> |
| 527 | + <dynamicField name="*_smax" type="alphaOnlySort" indexed="true" /> |
| 528 | + <dynamicField name="*_imin" type="int" indexed="true" /> |
| 529 | + <dynamicField name="*_imax" type="int" indexed="true" /> |
| 530 | + <dynamicField name="*_dtmin" type="date" indexed="true"/> |
| 531 | + <dynamicField name="*_dtmax" type="date" indexed="true"/> |
| 532 | + |
| 533 | + |
| 534 | + <!-- some trie-coded dynamic fields for faster range queries --> |
| 535 | + <dynamicField name="*_ti" type="tint" indexed="true" stored="true" /> |
| 536 | + <dynamicField name="*_tl" type="tlong" indexed="true" stored="true" /> |
| 537 | + <dynamicField name="*_tf" type="tfloat" indexed="true" stored="true" /> |
| 538 | + <dynamicField name="*_td" type="tdouble" indexed="true" stored="true" /> |
| 539 | + <dynamicField name="*_tdt" type="tdate" indexed="true" stored="true" /> |
| 540 | + |
| 541 | + <!-- Geo Coordinates --> |
| 542 | + <dynamicField name="*_lat" type="sdouble" indexed="true" stored="true" /> |
| 543 | + <dynamicField name="*_lng" type="sdouble" indexed="true" stored="true" /> |
| 544 | + |
| 545 | + <dynamicField name="*_pi" type="pint" indexed="true" stored="true" /> |
| 546 | + |
| 547 | + <dynamicField name="ignored_*" type="ignored" multiValued="true"/> |
| 548 | + <dynamicField name="attr_*" type="textgen" indexed="true" stored="true" /> |
| 549 | + |
| 550 | + <dynamicField name="random_*" type="random" /> |
| 551 | + |
| 552 | + <!-- uncomment the following to ignore any fields that don't already match an existing |
| 553 | + field name or dynamic field, rather than reporting them as an error. |
| 554 | + alternately, change the type="ignored" to some other type e.g. "text" if you want |
| 555 | + unknown fields indexed and/or stored by default --> |
| 556 | + <!--dynamicField name="*" type="ignored" multiValued="true" /--> |
| 557 | + |
| 558 | + </fields> |
| 559 | + |
| 560 | + <!-- Field to use to determine and enforce document uniqueness. |
| 561 | + Unless this field is marked with required="false", it will be a required field |
| 562 | + --> |
| 563 | + <uniqueKey>pagetitle</uniqueKey> |
| 564 | + |
| 565 | + <!-- field for the QueryParser to use when an explicit fieldname is absent --> |
| 566 | + <defaultSearchField>text</defaultSearchField> |
| 567 | + |
| 568 | + <!-- SolrQueryParser configuration: defaultOperator="AND|OR" --> |
| 569 | + <solrQueryParser defaultOperator="OR"/> |
| 570 | + |
| 571 | + <!-- copyField commands copy one field to another at the time a document |
| 572 | + is added to the index. It's used either to index the same field differently, |
| 573 | + or to add multiple fields to the same field for easier/faster searching. --> |
| 574 | +<!-- |
| 575 | + <copyField source="cat" dest="text"/> |
| 576 | + <copyField source="name" dest="text"/> |
| 577 | + <copyField source="manu" dest="text"/> |
| 578 | + <copyField source="features" dest="text"/> |
| 579 | + <copyField source="includes" dest="text"/> |
| 580 | + <copyField source="manu" dest="manu_exact"/> |
| 581 | +--> |
| 582 | + <!-- Above, multiple source fields are copied to the [text] field. |
| 583 | + Another way to map multiple source fields to the same |
| 584 | + destination field is to use the dynamic field syntax. |
| 585 | + copyField also supports a maxChars to copy setting. --> |
| 586 | + |
| 587 | + <copyField source="*" dest="text" maxChars="5000"/> |
| 588 | + <copyField source="pagetitle" dest="title"/> |
| 589 | + |
| 590 | + <!-- copy name to alphaNameSort, a field designed for sorting by name --> |
| 591 | + <!-- <copyField source="name" dest="alphaNameSort"/> --> |
| 592 | + |
| 593 | + |
| 594 | + <!-- Similarity is the scoring routine for each document vs. a query. |
| 595 | + A custom similarity may be specified here, but the default is fine |
| 596 | + for most applications. --> |
| 597 | + <!-- <similarity class="org.apache.lucene.search.DefaultSimilarity"/> --> |
| 598 | + <!-- ... OR ... |
| 599 | + Specify a SimilarityFactory class name implementation |
| 600 | + allowing parameters to be used. |
| 601 | + --> |
| 602 | + <!-- |
| 603 | + <similarity class="com.example.solr.CustomSimilarityFactory"> |
| 604 | + <str name="paramkey">param value</str> |
| 605 | + </similarity> |
| 606 | + --> |
| 607 | + |
| 608 | + |
| 609 | +</schema> |
Property changes on: trunk/extensions/SolrStore/solr-example/core0/conf/schema.xml |
___________________________________________________________________ |
Added: svn:eol-style |
606 | 610 | + native |
Index: trunk/extensions/SolrStore/solr-example/core0/conf/protwords.txt |
— | — | @@ -1,21 +1,21 @@ |
2 | | -# The ASF licenses this file to You under the Apache License, Version 2.0
|
3 | | -# (the "License"); you may not use this file except in compliance with
|
4 | | -# the License. You may obtain a copy of the License at
|
5 | | -#
|
6 | | -# http://www.apache.org/licenses/LICENSE-2.0
|
7 | | -#
|
8 | | -# Unless required by applicable law or agreed to in writing, software
|
9 | | -# distributed under the License is distributed on an "AS IS" BASIS,
|
10 | | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
11 | | -# See the License for the specific language governing permissions and
|
12 | | -# limitations under the License.
|
13 | | -
|
14 | | -#-----------------------------------------------------------------------
|
15 | | -# Use a protected word file to protect against the stemmer reducing two
|
16 | | -# unrelated words to the same base word.
|
17 | | -
|
18 | | -# Some non-words that normally won't be encountered,
|
19 | | -# just to test that they won't be stemmed.
|
20 | | -dontstems
|
21 | | -zwhacky
|
22 | | -
|
| 2 | +# The ASF licenses this file to You under the Apache License, Version 2.0 |
| 3 | +# (the "License"); you may not use this file except in compliance with |
| 4 | +# the License. You may obtain a copy of the License at |
| 5 | +# |
| 6 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 7 | +# |
| 8 | +# Unless required by applicable law or agreed to in writing, software |
| 9 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 10 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 11 | +# See the License for the specific language governing permissions and |
| 12 | +# limitations under the License. |
| 13 | + |
| 14 | +#----------------------------------------------------------------------- |
| 15 | +# Use a protected word file to protect against the stemmer reducing two |
| 16 | +# unrelated words to the same base word. |
| 17 | + |
| 18 | +# Some non-words that normally won't be encountered, |
| 19 | +# just to test that they won't be stemmed. |
| 20 | +dontstems |
| 21 | +zwhacky |
| 22 | + |
Property changes on: trunk/extensions/SolrStore/solr-example/core0/conf/protwords.txt |
___________________________________________________________________ |
Added: svn:eol-style |
23 | 23 | + native |
Index: trunk/extensions/SolrStore/solr-example/core0/conf/stopwords.txt |
— | — | @@ -1,58 +1,58 @@ |
2 | | -# Licensed to the Apache Software Foundation (ASF) under one or more
|
3 | | -# contributor license agreements. See the NOTICE file distributed with
|
4 | | -# this work for additional information regarding copyright ownership.
|
5 | | -# The ASF licenses this file to You under the Apache License, Version 2.0
|
6 | | -# (the "License"); you may not use this file except in compliance with
|
7 | | -# the License. You may obtain a copy of the License at
|
8 | | -#
|
9 | | -# http://www.apache.org/licenses/LICENSE-2.0
|
10 | | -#
|
11 | | -# Unless required by applicable law or agreed to in writing, software
|
12 | | -# distributed under the License is distributed on an "AS IS" BASIS,
|
13 | | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 | | -# See the License for the specific language governing permissions and
|
15 | | -# limitations under the License.
|
16 | | -
|
17 | | -#-----------------------------------------------------------------------
|
18 | | -# a couple of test stopwords to test that the words are really being
|
19 | | -# configured from this file:
|
20 | | -stopworda
|
21 | | -stopwordb
|
22 | | -
|
23 | | -#Standard english stop words taken from Lucene's StopAnalyzer
|
24 | | -a
|
25 | | -an
|
26 | | -and
|
27 | | -are
|
28 | | -as
|
29 | | -at
|
30 | | -be
|
31 | | -but
|
32 | | -by
|
33 | | -for
|
34 | | -if
|
35 | | -in
|
36 | | -into
|
37 | | -is
|
38 | | -it
|
39 | | -no
|
40 | | -not
|
41 | | -of
|
42 | | -on
|
43 | | -or
|
44 | | -s
|
45 | | -such
|
46 | | -t
|
47 | | -that
|
48 | | -the
|
49 | | -their
|
50 | | -then
|
51 | | -there
|
52 | | -these
|
53 | | -they
|
54 | | -this
|
55 | | -to
|
56 | | -was
|
57 | | -will
|
58 | | -with
|
59 | | -
|
| 2 | +# Licensed to the Apache Software Foundation (ASF) under one or more |
| 3 | +# contributor license agreements. See the NOTICE file distributed with |
| 4 | +# this work for additional information regarding copyright ownership. |
| 5 | +# The ASF licenses this file to You under the Apache License, Version 2.0 |
| 6 | +# (the "License"); you may not use this file except in compliance with |
| 7 | +# the License. You may obtain a copy of the License at |
| 8 | +# |
| 9 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | +# |
| 11 | +# Unless required by applicable law or agreed to in writing, software |
| 12 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | +# See the License for the specific language governing permissions and |
| 15 | +# limitations under the License. |
| 16 | + |
| 17 | +#----------------------------------------------------------------------- |
| 18 | +# a couple of test stopwords to test that the words are really being |
| 19 | +# configured from this file: |
| 20 | +stopworda |
| 21 | +stopwordb |
| 22 | + |
| 23 | +#Standard english stop words taken from Lucene's StopAnalyzer |
| 24 | +a |
| 25 | +an |
| 26 | +and |
| 27 | +are |
| 28 | +as |
| 29 | +at |
| 30 | +be |
| 31 | +but |
| 32 | +by |
| 33 | +for |
| 34 | +if |
| 35 | +in |
| 36 | +into |
| 37 | +is |
| 38 | +it |
| 39 | +no |
| 40 | +not |
| 41 | +of |
| 42 | +on |
| 43 | +or |
| 44 | +s |
| 45 | +such |
| 46 | +t |
| 47 | +that |
| 48 | +the |
| 49 | +their |
| 50 | +then |
| 51 | +there |
| 52 | +these |
| 53 | +they |
| 54 | +this |
| 55 | +to |
| 56 | +was |
| 57 | +will |
| 58 | +with |
| 59 | + |
Property changes on: trunk/extensions/SolrStore/solr-example/core0/conf/stopwords.txt |
___________________________________________________________________ |
Added: svn:eol-style |
60 | 60 | + native |
Index: trunk/extensions/SolrStore/solr-example/core0/conf/solrconfig.xml |
— | — | @@ -1,46 +1,46 @@ |
2 | | -<?xml version="1.0" encoding="UTF-8" ?>
|
3 | | -<!--
|
4 | | - Licensed to the Apache Software Foundation (ASF) under one or more
|
5 | | - contributor license agreements. See the NOTICE file distributed with
|
6 | | - this work for additional information regarding copyright ownership.
|
7 | | - The ASF licenses this file to You under the Apache License, Version 2.0
|
8 | | - (the "License"); you may not use this file except in compliance with
|
9 | | - the License. You may obtain a copy of the License at
|
10 | | -
|
11 | | - http://www.apache.org/licenses/LICENSE-2.0
|
12 | | -
|
13 | | - Unless required by applicable law or agreed to in writing, software
|
14 | | - distributed under the License is distributed on an "AS IS" BASIS,
|
15 | | - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 | | - See the License for the specific language governing permissions and
|
17 | | - limitations under the License.
|
18 | | -
|
19 | | -<!--
|
20 | | - This is a stripped down config file used for a simple example...
|
21 | | - It is *not* a good example to work from.
|
22 | | -<config>
|
23 | | - <luceneMatchVersion>LUCENE_35</luceneMatchVersion>
|
24 | | - <!-- The DirectoryFactory to use for indexes.
|
25 | | - solr.StandardDirectoryFactory, the default, is filesystem based.
|
26 | | - solr.RAMDirectoryFactory is memory based, not persistent, and doesn't work with replication. -->
|
27 | | - <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>
|
28 | | -
|
29 | | - <updateHandler class="solr.DirectUpdateHandler2" />
|
30 | | -
|
31 | | - <requestDispatcher handleSelect="true" >
|
32 | | - <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
|
33 | | - </requestDispatcher>
|
34 | | -
|
35 | | - <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
|
36 | | - <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
|
37 | | - <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
|
38 | | -
|
39 | | - <!-- config for the admin interface -->
|
40 | | - <admin>
|
41 | | - <defaultQuery>solr</defaultQuery>
|
42 | | - </admin>
|
43 | | -
|
44 | | -</config>
|
45 | | -
|
| 2 | +<?xml version="1.0" encoding="UTF-8" ?> |
| 3 | +<!-- |
| 4 | + Licensed to the Apache Software Foundation (ASF) under one or more |
| 5 | + contributor license agreements. See the NOTICE file distributed with |
| 6 | + this work for additional information regarding copyright ownership. |
| 7 | + The ASF licenses this file to You under the Apache License, Version 2.0 |
| 8 | + (the "License"); you may not use this file except in compliance with |
| 9 | + the License. You may obtain a copy of the License at |
| 10 | + |
| 11 | + http://www.apache.org/licenses/LICENSE-2.0 |
| 12 | + |
| 13 | + Unless required by applicable law or agreed to in writing, software |
| 14 | + distributed under the License is distributed on an "AS IS" BASIS, |
| 15 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 16 | + See the License for the specific language governing permissions and |
| 17 | + limitations under the License. |
| 18 | +--> |
| 19 | + |
| 20 | +<!-- |
| 21 | + This is a stripped down config file used for a simple example... |
| 22 | + It is *not* a good example to work from. |
| 23 | +--> |
| 24 | +<config> |
| 25 | + <luceneMatchVersion>LUCENE_35</luceneMatchVersion> |
| 26 | + <!-- The DirectoryFactory to use for indexes. |
| 27 | + solr.StandardDirectoryFactory, the default, is filesystem based. |
| 28 | + solr.RAMDirectoryFactory is memory based, not persistent, and doesn't work with replication. --> |
| 29 | + <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/> |
| 30 | + |
| 31 | + <updateHandler class="solr.DirectUpdateHandler2" /> |
| 32 | + |
| 33 | + <requestDispatcher handleSelect="true" > |
| 34 | + <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" /> |
| 35 | + </requestDispatcher> |
| 36 | + |
| 37 | + <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" /> |
| 38 | + <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" /> |
| 39 | + <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> |
| 40 | + |
| 41 | + <!-- config for the admin interface --> |
| 42 | + <admin> |
| 43 | + <defaultQuery>solr</defaultQuery> |
| 44 | + </admin> |
| 45 | + |
| 46 | +</config> |
| 47 | + |
Property changes on: trunk/extensions/SolrStore/solr-example/core0/conf/solrconfig.xml |
___________________________________________________________________ |
Added: svn:eol-style |
46 | 48 | + native |
Index: trunk/extensions/SolrStore/solr-example/core0/conf/stopwords_en.txt |
— | — | @@ -1,54 +1,54 @@ |
2 | | -# Licensed to the Apache Software Foundation (ASF) under one or more
|
3 | | -# contributor license agreements. See the NOTICE file distributed with
|
4 | | -# this work for additional information regarding copyright ownership.
|
5 | | -# The ASF licenses this file to You under the Apache License, Version 2.0
|
6 | | -# (the "License"); you may not use this file except in compliance with
|
7 | | -# the License. You may obtain a copy of the License at
|
8 | | -#
|
9 | | -# http://www.apache.org/licenses/LICENSE-2.0
|
10 | | -#
|
11 | | -# Unless required by applicable law or agreed to in writing, software
|
12 | | -# distributed under the License is distributed on an "AS IS" BASIS,
|
13 | | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14 | | -# See the License for the specific language governing permissions and
|
15 | | -# limitations under the License.
|
16 | | -
|
17 | | -# a couple of test stopwords to test that the words are really being
|
18 | | -# configured from this file:
|
19 | | -stopworda
|
20 | | -stopwordb
|
21 | | -
|
22 | | -# Standard english stop words taken from Lucene's StopAnalyzer
|
23 | | -a
|
24 | | -an
|
25 | | -and
|
26 | | -are
|
27 | | -as
|
28 | | -at
|
29 | | -be
|
30 | | -but
|
31 | | -by
|
32 | | -for
|
33 | | -if
|
34 | | -in
|
35 | | -into
|
36 | | -is
|
37 | | -it
|
38 | | -no
|
39 | | -not
|
40 | | -of
|
41 | | -on
|
42 | | -or
|
43 | | -such
|
44 | | -that
|
45 | | -the
|
46 | | -their
|
47 | | -then
|
48 | | -there
|
49 | | -these
|
50 | | -they
|
51 | | -this
|
52 | | -to
|
53 | | -was
|
54 | | -will
|
55 | | -with
|
| 2 | +# Licensed to the Apache Software Foundation (ASF) under one or more |
| 3 | +# contributor license agreements. See the NOTICE file distributed with |
| 4 | +# this work for additional information regarding copyright ownership. |
| 5 | +# The ASF licenses this file to You under the Apache License, Version 2.0 |
| 6 | +# (the "License"); you may not use this file except in compliance with |
| 7 | +# the License. You may obtain a copy of the License at |
| 8 | +# |
| 9 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | +# |
| 11 | +# Unless required by applicable law or agreed to in writing, software |
| 12 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | +# See the License for the specific language governing permissions and |
| 15 | +# limitations under the License. |
| 16 | + |
| 17 | +# a couple of test stopwords to test that the words are really being |
| 18 | +# configured from this file: |
| 19 | +stopworda |
| 20 | +stopwordb |
| 21 | + |
| 22 | +# Standard english stop words taken from Lucene's StopAnalyzer |
| 23 | +a |
| 24 | +an |
| 25 | +and |
| 26 | +are |
| 27 | +as |
| 28 | +at |
| 29 | +be |
| 30 | +but |
| 31 | +by |
| 32 | +for |
| 33 | +if |
| 34 | +in |
| 35 | +into |
| 36 | +is |
| 37 | +it |
| 38 | +no |
| 39 | +not |
| 40 | +of |
| 41 | +on |
| 42 | +or |
| 43 | +such |
| 44 | +that |
| 45 | +the |
| 46 | +their |
| 47 | +then |
| 48 | +there |
| 49 | +these |
| 50 | +they |
| 51 | +this |
| 52 | +to |
| 53 | +was |
| 54 | +will |
| 55 | +with |
Property changes on: trunk/extensions/SolrStore/solr-example/core0/conf/stopwords_en.txt |
___________________________________________________________________ |
Added: svn:eol-style |
56 | 56 | + native |
Index: trunk/extensions/SolrStore/solr-example/core0/conf/mapping-FoldToASCII.txt |
— | — | @@ -1,3813 +1,3813 @@ |
2 | | -# The ASF licenses this file to You under the Apache License, Version 2.0
|
3 | | -# (the "License"); you may not use this file except in compliance with
|
4 | | -# the License. You may obtain a copy of the License at
|
5 | | -#
|
6 | | -# http://www.apache.org/licenses/LICENSE-2.0
|
7 | | -#
|
8 | | -# Unless required by applicable law or agreed to in writing, software
|
9 | | -# distributed under the License is distributed on an "AS IS" BASIS,
|
10 | | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
11 | | -# See the License for the specific language governing permissions and
|
12 | | -# limitations under the License.
|
13 | | -
|
14 | | -
|
15 | | -# This map converts alphabetic, numeric, and symbolic Unicode characters
|
16 | | -# which are not in the first 127 ASCII characters (the "Basic Latin" Unicode
|
17 | | -# block) into their ASCII equivalents, if one exists.
|
18 | | -#
|
19 | | -# Characters from the following Unicode blocks are converted; however, only
|
20 | | -# those characters with reasonable ASCII alternatives are converted:
|
21 | | -#
|
22 | | -# - C1 Controls and Latin-1 Supplement: http://www.unicode.org/charts/PDF/U0080.pdf
|
23 | | -# - Latin Extended-A: http://www.unicode.org/charts/PDF/U0100.pdf
|
24 | | -# - Latin Extended-B: http://www.unicode.org/charts/PDF/U0180.pdf
|
25 | | -# - Latin Extended Additional: http://www.unicode.org/charts/PDF/U1E00.pdf
|
26 | | -# - Latin Extended-C: http://www.unicode.org/charts/PDF/U2C60.pdf
|
27 | | -# - Latin Extended-D: http://www.unicode.org/charts/PDF/UA720.pdf
|
28 | | -# - IPA Extensions: http://www.unicode.org/charts/PDF/U0250.pdf
|
29 | | -# - Phonetic Extensions: http://www.unicode.org/charts/PDF/U1D00.pdf
|
30 | | -# - Phonetic Extensions Supplement: http://www.unicode.org/charts/PDF/U1D80.pdf
|
31 | | -# - General Punctuation: http://www.unicode.org/charts/PDF/U2000.pdf
|
32 | | -# - Superscripts and Subscripts: http://www.unicode.org/charts/PDF/U2070.pdf
|
33 | | -# - Enclosed Alphanumerics: http://www.unicode.org/charts/PDF/U2460.pdf
|
34 | | -# - Dingbats: http://www.unicode.org/charts/PDF/U2700.pdf
|
35 | | -# - Supplemental Punctuation: http://www.unicode.org/charts/PDF/U2E00.pdf
|
36 | | -# - Alphabetic Presentation Forms: http://www.unicode.org/charts/PDF/UFB00.pdf
|
37 | | -# - Halfwidth and Fullwidth Forms: http://www.unicode.org/charts/PDF/UFF00.pdf
|
38 | | -#
|
39 | | -# See: http://en.wikipedia.org/wiki/Latin_characters_in_Unicode
|
40 | | -#
|
41 | | -# The set of character conversions supported by this map is a superset of
|
42 | | -# those supported by the map represented by mapping-ISOLatin1Accent.txt.
|
43 | | -#
|
44 | | -# See the bottom of this file for the Perl script used to generate the contents
|
45 | | -# of this file (without this header) from ASCIIFoldingFilter.java.
|
46 | | -
|
47 | | -
|
48 | | -# Syntax:
|
49 | | -# "source" => "target"
|
50 | | -# "source".length() > 0 (source cannot be empty.)
|
51 | | -# "target".length() >= 0 (target can be empty.)
|
52 | | -
|
53 | | -
|
54 | | -# À [LATIN CAPITAL LETTER A WITH GRAVE]
|
55 | | -"\u00C0" => "A"
|
56 | | -
|
57 | | -# Á [LATIN CAPITAL LETTER A WITH ACUTE]
|
58 | | -"\u00C1" => "A"
|
59 | | -
|
60 | | -# Â [LATIN CAPITAL LETTER A WITH CIRCUMFLEX]
|
61 | | -"\u00C2" => "A"
|
62 | | -
|
63 | | -# Ã [LATIN CAPITAL LETTER A WITH TILDE]
|
64 | | -"\u00C3" => "A"
|
65 | | -
|
66 | | -# Ä [LATIN CAPITAL LETTER A WITH DIAERESIS]
|
67 | | -"\u00C4" => "A"
|
68 | | -
|
69 | | -# Å [LATIN CAPITAL LETTER A WITH RING ABOVE]
|
70 | | -"\u00C5" => "A"
|
71 | | -
|
72 | | -# Ā [LATIN CAPITAL LETTER A WITH MACRON]
|
73 | | -"\u0100" => "A"
|
74 | | -
|
75 | | -# Ă [LATIN CAPITAL LETTER A WITH BREVE]
|
76 | | -"\u0102" => "A"
|
77 | | -
|
78 | | -# Ą [LATIN CAPITAL LETTER A WITH OGONEK]
|
79 | | -"\u0104" => "A"
|
80 | | -
|
81 | | -# Ə http://en.wikipedia.org/wiki/Schwa [LATIN CAPITAL LETTER SCHWA]
|
82 | | -"\u018F" => "A"
|
83 | | -
|
84 | | -# Ǎ [LATIN CAPITAL LETTER A WITH CARON]
|
85 | | -"\u01CD" => "A"
|
86 | | -
|
87 | | -# Ǟ [LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON]
|
88 | | -"\u01DE" => "A"
|
89 | | -
|
90 | | -# Ǡ [LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON]
|
91 | | -"\u01E0" => "A"
|
92 | | -
|
93 | | -# Ǻ [LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE]
|
94 | | -"\u01FA" => "A"
|
95 | | -
|
96 | | -# Ȁ [LATIN CAPITAL LETTER A WITH DOUBLE GRAVE]
|
97 | | -"\u0200" => "A"
|
98 | | -
|
99 | | -# Ȃ [LATIN CAPITAL LETTER A WITH INVERTED BREVE]
|
100 | | -"\u0202" => "A"
|
101 | | -
|
102 | | -# Ȧ [LATIN CAPITAL LETTER A WITH DOT ABOVE]
|
103 | | -"\u0226" => "A"
|
104 | | -
|
105 | | -# Ⱥ [LATIN CAPITAL LETTER A WITH STROKE]
|
106 | | -"\u023A" => "A"
|
107 | | -
|
108 | | -# ᴀ [LATIN LETTER SMALL CAPITAL A]
|
109 | | -"\u1D00" => "A"
|
110 | | -
|
111 | | -# Ḁ [LATIN CAPITAL LETTER A WITH RING BELOW]
|
112 | | -"\u1E00" => "A"
|
113 | | -
|
114 | | -# Ạ [LATIN CAPITAL LETTER A WITH DOT BELOW]
|
115 | | -"\u1EA0" => "A"
|
116 | | -
|
117 | | -# Ả [LATIN CAPITAL LETTER A WITH HOOK ABOVE]
|
118 | | -"\u1EA2" => "A"
|
119 | | -
|
120 | | -# Ấ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE]
|
121 | | -"\u1EA4" => "A"
|
122 | | -
|
123 | | -# Ầ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE]
|
124 | | -"\u1EA6" => "A"
|
125 | | -
|
126 | | -# Ẩ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE]
|
127 | | -"\u1EA8" => "A"
|
128 | | -
|
129 | | -# Ẫ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE]
|
130 | | -"\u1EAA" => "A"
|
131 | | -
|
132 | | -# Ậ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW]
|
133 | | -"\u1EAC" => "A"
|
134 | | -
|
135 | | -# Ắ [LATIN CAPITAL LETTER A WITH BREVE AND ACUTE]
|
136 | | -"\u1EAE" => "A"
|
137 | | -
|
138 | | -# Ằ [LATIN CAPITAL LETTER A WITH BREVE AND GRAVE]
|
139 | | -"\u1EB0" => "A"
|
140 | | -
|
141 | | -# Ẳ [LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE]
|
142 | | -"\u1EB2" => "A"
|
143 | | -
|
144 | | -# Ẵ [LATIN CAPITAL LETTER A WITH BREVE AND TILDE]
|
145 | | -"\u1EB4" => "A"
|
146 | | -
|
147 | | -# Ặ [LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW]
|
148 | | -"\u1EB6" => "A"
|
149 | | -
|
150 | | -# Ⓐ [CIRCLED LATIN CAPITAL LETTER A]
|
151 | | -"\u24B6" => "A"
|
152 | | -
|
153 | | -# A [FULLWIDTH LATIN CAPITAL LETTER A]
|
154 | | -"\uFF21" => "A"
|
155 | | -
|
156 | | -# à [LATIN SMALL LETTER A WITH GRAVE]
|
157 | | -"\u00E0" => "a"
|
158 | | -
|
159 | | -# á [LATIN SMALL LETTER A WITH ACUTE]
|
160 | | -"\u00E1" => "a"
|
161 | | -
|
162 | | -# â [LATIN SMALL LETTER A WITH CIRCUMFLEX]
|
163 | | -"\u00E2" => "a"
|
164 | | -
|
165 | | -# ã [LATIN SMALL LETTER A WITH TILDE]
|
166 | | -"\u00E3" => "a"
|
167 | | -
|
168 | | -# ä [LATIN SMALL LETTER A WITH DIAERESIS]
|
169 | | -"\u00E4" => "a"
|
170 | | -
|
171 | | -# å [LATIN SMALL LETTER A WITH RING ABOVE]
|
172 | | -"\u00E5" => "a"
|
173 | | -
|
174 | | -# ā [LATIN SMALL LETTER A WITH MACRON]
|
175 | | -"\u0101" => "a"
|
176 | | -
|
177 | | -# ă [LATIN SMALL LETTER A WITH BREVE]
|
178 | | -"\u0103" => "a"
|
179 | | -
|
180 | | -# ą [LATIN SMALL LETTER A WITH OGONEK]
|
181 | | -"\u0105" => "a"
|
182 | | -
|
183 | | -# ǎ [LATIN SMALL LETTER A WITH CARON]
|
184 | | -"\u01CE" => "a"
|
185 | | -
|
186 | | -# ǟ [LATIN SMALL LETTER A WITH DIAERESIS AND MACRON]
|
187 | | -"\u01DF" => "a"
|
188 | | -
|
189 | | -# ǡ [LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON]
|
190 | | -"\u01E1" => "a"
|
191 | | -
|
192 | | -# ǻ [LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE]
|
193 | | -"\u01FB" => "a"
|
194 | | -
|
195 | | -# ȁ [LATIN SMALL LETTER A WITH DOUBLE GRAVE]
|
196 | | -"\u0201" => "a"
|
197 | | -
|
198 | | -# ȃ [LATIN SMALL LETTER A WITH INVERTED BREVE]
|
199 | | -"\u0203" => "a"
|
200 | | -
|
201 | | -# ȧ [LATIN SMALL LETTER A WITH DOT ABOVE]
|
202 | | -"\u0227" => "a"
|
203 | | -
|
204 | | -# ɐ [LATIN SMALL LETTER TURNED A]
|
205 | | -"\u0250" => "a"
|
206 | | -
|
207 | | -# ə [LATIN SMALL LETTER SCHWA]
|
208 | | -"\u0259" => "a"
|
209 | | -
|
210 | | -# ɚ [LATIN SMALL LETTER SCHWA WITH HOOK]
|
211 | | -"\u025A" => "a"
|
212 | | -
|
213 | | -# ᶏ [LATIN SMALL LETTER A WITH RETROFLEX HOOK]
|
214 | | -"\u1D8F" => "a"
|
215 | | -
|
216 | | -# ᶕ [LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK]
|
217 | | -"\u1D95" => "a"
|
218 | | -
|
219 | | -# ạ [LATIN SMALL LETTER A WITH RING BELOW]
|
220 | | -"\u1E01" => "a"
|
221 | | -
|
222 | | -# ả [LATIN SMALL LETTER A WITH RIGHT HALF RING]
|
223 | | -"\u1E9A" => "a"
|
224 | | -
|
225 | | -# ạ [LATIN SMALL LETTER A WITH DOT BELOW]
|
226 | | -"\u1EA1" => "a"
|
227 | | -
|
228 | | -# ả [LATIN SMALL LETTER A WITH HOOK ABOVE]
|
229 | | -"\u1EA3" => "a"
|
230 | | -
|
231 | | -# ấ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE]
|
232 | | -"\u1EA5" => "a"
|
233 | | -
|
234 | | -# ầ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE]
|
235 | | -"\u1EA7" => "a"
|
236 | | -
|
237 | | -# ẩ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE]
|
238 | | -"\u1EA9" => "a"
|
239 | | -
|
240 | | -# ẫ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE]
|
241 | | -"\u1EAB" => "a"
|
242 | | -
|
243 | | -# ậ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW]
|
244 | | -"\u1EAD" => "a"
|
245 | | -
|
246 | | -# ắ [LATIN SMALL LETTER A WITH BREVE AND ACUTE]
|
247 | | -"\u1EAF" => "a"
|
248 | | -
|
249 | | -# ằ [LATIN SMALL LETTER A WITH BREVE AND GRAVE]
|
250 | | -"\u1EB1" => "a"
|
251 | | -
|
252 | | -# ẳ [LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE]
|
253 | | -"\u1EB3" => "a"
|
254 | | -
|
255 | | -# ẵ [LATIN SMALL LETTER A WITH BREVE AND TILDE]
|
256 | | -"\u1EB5" => "a"
|
257 | | -
|
258 | | -# ặ [LATIN SMALL LETTER A WITH BREVE AND DOT BELOW]
|
259 | | -"\u1EB7" => "a"
|
260 | | -
|
261 | | -# ₐ [LATIN SUBSCRIPT SMALL LETTER A]
|
262 | | -"\u2090" => "a"
|
263 | | -
|
264 | | -# ₔ [LATIN SUBSCRIPT SMALL LETTER SCHWA]
|
265 | | -"\u2094" => "a"
|
266 | | -
|
267 | | -# ⓐ [CIRCLED LATIN SMALL LETTER A]
|
268 | | -"\u24D0" => "a"
|
269 | | -
|
270 | | -# ⱥ [LATIN SMALL LETTER A WITH STROKE]
|
271 | | -"\u2C65" => "a"
|
272 | | -
|
273 | | -# Ɐ [LATIN CAPITAL LETTER TURNED A]
|
274 | | -"\u2C6F" => "a"
|
275 | | -
|
276 | | -# a [FULLWIDTH LATIN SMALL LETTER A]
|
277 | | -"\uFF41" => "a"
|
278 | | -
|
279 | | -# Ꜳ [LATIN CAPITAL LETTER AA]
|
280 | | -"\uA732" => "AA"
|
281 | | -
|
282 | | -# Æ [LATIN CAPITAL LETTER AE]
|
283 | | -"\u00C6" => "AE"
|
284 | | -
|
285 | | -# Ǣ [LATIN CAPITAL LETTER AE WITH MACRON]
|
286 | | -"\u01E2" => "AE"
|
287 | | -
|
288 | | -# Ǽ [LATIN CAPITAL LETTER AE WITH ACUTE]
|
289 | | -"\u01FC" => "AE"
|
290 | | -
|
291 | | -# ᴁ [LATIN LETTER SMALL CAPITAL AE]
|
292 | | -"\u1D01" => "AE"
|
293 | | -
|
294 | | -# Ꜵ [LATIN CAPITAL LETTER AO]
|
295 | | -"\uA734" => "AO"
|
296 | | -
|
297 | | -# Ꜷ [LATIN CAPITAL LETTER AU]
|
298 | | -"\uA736" => "AU"
|
299 | | -
|
300 | | -# Ꜹ [LATIN CAPITAL LETTER AV]
|
301 | | -"\uA738" => "AV"
|
302 | | -
|
303 | | -# Ꜻ [LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR]
|
304 | | -"\uA73A" => "AV"
|
305 | | -
|
306 | | -# Ꜽ [LATIN CAPITAL LETTER AY]
|
307 | | -"\uA73C" => "AY"
|
308 | | -
|
309 | | -# ⒜ [PARENTHESIZED LATIN SMALL LETTER A]
|
310 | | -"\u249C" => "(a)"
|
311 | | -
|
312 | | -# ꜳ [LATIN SMALL LETTER AA]
|
313 | | -"\uA733" => "aa"
|
314 | | -
|
315 | | -# æ [LATIN SMALL LETTER AE]
|
316 | | -"\u00E6" => "ae"
|
317 | | -
|
318 | | -# ǣ [LATIN SMALL LETTER AE WITH MACRON]
|
319 | | -"\u01E3" => "ae"
|
320 | | -
|
321 | | -# ǽ [LATIN SMALL LETTER AE WITH ACUTE]
|
322 | | -"\u01FD" => "ae"
|
323 | | -
|
324 | | -# ᴂ [LATIN SMALL LETTER TURNED AE]
|
325 | | -"\u1D02" => "ae"
|
326 | | -
|
327 | | -# ꜵ [LATIN SMALL LETTER AO]
|
328 | | -"\uA735" => "ao"
|
329 | | -
|
330 | | -# ꜷ [LATIN SMALL LETTER AU]
|
331 | | -"\uA737" => "au"
|
332 | | -
|
333 | | -# ꜹ [LATIN SMALL LETTER AV]
|
334 | | -"\uA739" => "av"
|
335 | | -
|
336 | | -# ꜻ [LATIN SMALL LETTER AV WITH HORIZONTAL BAR]
|
337 | | -"\uA73B" => "av"
|
338 | | -
|
339 | | -# ꜽ [LATIN SMALL LETTER AY]
|
340 | | -"\uA73D" => "ay"
|
341 | | -
|
342 | | -# Ɓ [LATIN CAPITAL LETTER B WITH HOOK]
|
343 | | -"\u0181" => "B"
|
344 | | -
|
345 | | -# Ƃ [LATIN CAPITAL LETTER B WITH TOPBAR]
|
346 | | -"\u0182" => "B"
|
347 | | -
|
348 | | -# Ƀ [LATIN CAPITAL LETTER B WITH STROKE]
|
349 | | -"\u0243" => "B"
|
350 | | -
|
351 | | -# ʙ [LATIN LETTER SMALL CAPITAL B]
|
352 | | -"\u0299" => "B"
|
353 | | -
|
354 | | -# ᴃ [LATIN LETTER SMALL CAPITAL BARRED B]
|
355 | | -"\u1D03" => "B"
|
356 | | -
|
357 | | -# Ḃ [LATIN CAPITAL LETTER B WITH DOT ABOVE]
|
358 | | -"\u1E02" => "B"
|
359 | | -
|
360 | | -# Ḅ [LATIN CAPITAL LETTER B WITH DOT BELOW]
|
361 | | -"\u1E04" => "B"
|
362 | | -
|
363 | | -# Ḇ [LATIN CAPITAL LETTER B WITH LINE BELOW]
|
364 | | -"\u1E06" => "B"
|
365 | | -
|
366 | | -# Ⓑ [CIRCLED LATIN CAPITAL LETTER B]
|
367 | | -"\u24B7" => "B"
|
368 | | -
|
369 | | -# B [FULLWIDTH LATIN CAPITAL LETTER B]
|
370 | | -"\uFF22" => "B"
|
371 | | -
|
372 | | -# ƀ [LATIN SMALL LETTER B WITH STROKE]
|
373 | | -"\u0180" => "b"
|
374 | | -
|
375 | | -# ƃ [LATIN SMALL LETTER B WITH TOPBAR]
|
376 | | -"\u0183" => "b"
|
377 | | -
|
378 | | -# ɓ [LATIN SMALL LETTER B WITH HOOK]
|
379 | | -"\u0253" => "b"
|
380 | | -
|
381 | | -# ᵬ [LATIN SMALL LETTER B WITH MIDDLE TILDE]
|
382 | | -"\u1D6C" => "b"
|
383 | | -
|
384 | | -# ᶀ [LATIN SMALL LETTER B WITH PALATAL HOOK]
|
385 | | -"\u1D80" => "b"
|
386 | | -
|
387 | | -# ḃ [LATIN SMALL LETTER B WITH DOT ABOVE]
|
388 | | -"\u1E03" => "b"
|
389 | | -
|
390 | | -# ḅ [LATIN SMALL LETTER B WITH DOT BELOW]
|
391 | | -"\u1E05" => "b"
|
392 | | -
|
393 | | -# ḇ [LATIN SMALL LETTER B WITH LINE BELOW]
|
394 | | -"\u1E07" => "b"
|
395 | | -
|
396 | | -# ⓑ [CIRCLED LATIN SMALL LETTER B]
|
397 | | -"\u24D1" => "b"
|
398 | | -
|
399 | | -# b [FULLWIDTH LATIN SMALL LETTER B]
|
400 | | -"\uFF42" => "b"
|
401 | | -
|
402 | | -# ⒝ [PARENTHESIZED LATIN SMALL LETTER B]
|
403 | | -"\u249D" => "(b)"
|
404 | | -
|
405 | | -# Ç [LATIN CAPITAL LETTER C WITH CEDILLA]
|
406 | | -"\u00C7" => "C"
|
407 | | -
|
408 | | -# Ć [LATIN CAPITAL LETTER C WITH ACUTE]
|
409 | | -"\u0106" => "C"
|
410 | | -
|
411 | | -# Ĉ [LATIN CAPITAL LETTER C WITH CIRCUMFLEX]
|
412 | | -"\u0108" => "C"
|
413 | | -
|
414 | | -# Ċ [LATIN CAPITAL LETTER C WITH DOT ABOVE]
|
415 | | -"\u010A" => "C"
|
416 | | -
|
417 | | -# Č [LATIN CAPITAL LETTER C WITH CARON]
|
418 | | -"\u010C" => "C"
|
419 | | -
|
420 | | -# Ƈ [LATIN CAPITAL LETTER C WITH HOOK]
|
421 | | -"\u0187" => "C"
|
422 | | -
|
423 | | -# Ȼ [LATIN CAPITAL LETTER C WITH STROKE]
|
424 | | -"\u023B" => "C"
|
425 | | -
|
426 | | -# ʗ [LATIN LETTER STRETCHED C]
|
427 | | -"\u0297" => "C"
|
428 | | -
|
429 | | -# ᴄ [LATIN LETTER SMALL CAPITAL C]
|
430 | | -"\u1D04" => "C"
|
431 | | -
|
432 | | -# Ḉ [LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE]
|
433 | | -"\u1E08" => "C"
|
434 | | -
|
435 | | -# Ⓒ [CIRCLED LATIN CAPITAL LETTER C]
|
436 | | -"\u24B8" => "C"
|
437 | | -
|
438 | | -# C [FULLWIDTH LATIN CAPITAL LETTER C]
|
439 | | -"\uFF23" => "C"
|
440 | | -
|
441 | | -# ç [LATIN SMALL LETTER C WITH CEDILLA]
|
442 | | -"\u00E7" => "c"
|
443 | | -
|
444 | | -# ć [LATIN SMALL LETTER C WITH ACUTE]
|
445 | | -"\u0107" => "c"
|
446 | | -
|
447 | | -# ĉ [LATIN SMALL LETTER C WITH CIRCUMFLEX]
|
448 | | -"\u0109" => "c"
|
449 | | -
|
450 | | -# ċ [LATIN SMALL LETTER C WITH DOT ABOVE]
|
451 | | -"\u010B" => "c"
|
452 | | -
|
453 | | -# č [LATIN SMALL LETTER C WITH CARON]
|
454 | | -"\u010D" => "c"
|
455 | | -
|
456 | | -# ƈ [LATIN SMALL LETTER C WITH HOOK]
|
457 | | -"\u0188" => "c"
|
458 | | -
|
459 | | -# ȼ [LATIN SMALL LETTER C WITH STROKE]
|
460 | | -"\u023C" => "c"
|
461 | | -
|
462 | | -# ɕ [LATIN SMALL LETTER C WITH CURL]
|
463 | | -"\u0255" => "c"
|
464 | | -
|
465 | | -# ḉ [LATIN SMALL LETTER C WITH CEDILLA AND ACUTE]
|
466 | | -"\u1E09" => "c"
|
467 | | -
|
468 | | -# ↄ [LATIN SMALL LETTER REVERSED C]
|
469 | | -"\u2184" => "c"
|
470 | | -
|
471 | | -# ⓒ [CIRCLED LATIN SMALL LETTER C]
|
472 | | -"\u24D2" => "c"
|
473 | | -
|
474 | | -# Ꜿ [LATIN CAPITAL LETTER REVERSED C WITH DOT]
|
475 | | -"\uA73E" => "c"
|
476 | | -
|
477 | | -# ꜿ [LATIN SMALL LETTER REVERSED C WITH DOT]
|
478 | | -"\uA73F" => "c"
|
479 | | -
|
480 | | -# c [FULLWIDTH LATIN SMALL LETTER C]
|
481 | | -"\uFF43" => "c"
|
482 | | -
|
483 | | -# ⒞ [PARENTHESIZED LATIN SMALL LETTER C]
|
484 | | -"\u249E" => "(c)"
|
485 | | -
|
486 | | -# Ð [LATIN CAPITAL LETTER ETH]
|
487 | | -"\u00D0" => "D"
|
488 | | -
|
489 | | -# Ď [LATIN CAPITAL LETTER D WITH CARON]
|
490 | | -"\u010E" => "D"
|
491 | | -
|
492 | | -# Đ [LATIN CAPITAL LETTER D WITH STROKE]
|
493 | | -"\u0110" => "D"
|
494 | | -
|
495 | | -# Ɖ [LATIN CAPITAL LETTER AFRICAN D]
|
496 | | -"\u0189" => "D"
|
497 | | -
|
498 | | -# Ɗ [LATIN CAPITAL LETTER D WITH HOOK]
|
499 | | -"\u018A" => "D"
|
500 | | -
|
501 | | -# Ƌ [LATIN CAPITAL LETTER D WITH TOPBAR]
|
502 | | -"\u018B" => "D"
|
503 | | -
|
504 | | -# ᴅ [LATIN LETTER SMALL CAPITAL D]
|
505 | | -"\u1D05" => "D"
|
506 | | -
|
507 | | -# ᴆ [LATIN LETTER SMALL CAPITAL ETH]
|
508 | | -"\u1D06" => "D"
|
509 | | -
|
510 | | -# Ḋ [LATIN CAPITAL LETTER D WITH DOT ABOVE]
|
511 | | -"\u1E0A" => "D"
|
512 | | -
|
513 | | -# Ḍ [LATIN CAPITAL LETTER D WITH DOT BELOW]
|
514 | | -"\u1E0C" => "D"
|
515 | | -
|
516 | | -# Ḏ [LATIN CAPITAL LETTER D WITH LINE BELOW]
|
517 | | -"\u1E0E" => "D"
|
518 | | -
|
519 | | -# Ḑ [LATIN CAPITAL LETTER D WITH CEDILLA]
|
520 | | -"\u1E10" => "D"
|
521 | | -
|
522 | | -# Ḓ [LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW]
|
523 | | -"\u1E12" => "D"
|
524 | | -
|
525 | | -# Ⓓ [CIRCLED LATIN CAPITAL LETTER D]
|
526 | | -"\u24B9" => "D"
|
527 | | -
|
528 | | -# Ꝺ [LATIN CAPITAL LETTER INSULAR D]
|
529 | | -"\uA779" => "D"
|
530 | | -
|
531 | | -# D [FULLWIDTH LATIN CAPITAL LETTER D]
|
532 | | -"\uFF24" => "D"
|
533 | | -
|
534 | | -# ð [LATIN SMALL LETTER ETH]
|
535 | | -"\u00F0" => "d"
|
536 | | -
|
537 | | -# ď [LATIN SMALL LETTER D WITH CARON]
|
538 | | -"\u010F" => "d"
|
539 | | -
|
540 | | -# đ [LATIN SMALL LETTER D WITH STROKE]
|
541 | | -"\u0111" => "d"
|
542 | | -
|
543 | | -# ƌ [LATIN SMALL LETTER D WITH TOPBAR]
|
544 | | -"\u018C" => "d"
|
545 | | -
|
546 | | -# ȡ [LATIN SMALL LETTER D WITH CURL]
|
547 | | -"\u0221" => "d"
|
548 | | -
|
549 | | -# ɖ [LATIN SMALL LETTER D WITH TAIL]
|
550 | | -"\u0256" => "d"
|
551 | | -
|
552 | | -# ɗ [LATIN SMALL LETTER D WITH HOOK]
|
553 | | -"\u0257" => "d"
|
554 | | -
|
555 | | -# ᵭ [LATIN SMALL LETTER D WITH MIDDLE TILDE]
|
556 | | -"\u1D6D" => "d"
|
557 | | -
|
558 | | -# ᶁ [LATIN SMALL LETTER D WITH PALATAL HOOK]
|
559 | | -"\u1D81" => "d"
|
560 | | -
|
561 | | -# ᶑ [LATIN SMALL LETTER D WITH HOOK AND TAIL]
|
562 | | -"\u1D91" => "d"
|
563 | | -
|
564 | | -# ḋ [LATIN SMALL LETTER D WITH DOT ABOVE]
|
565 | | -"\u1E0B" => "d"
|
566 | | -
|
567 | | -# ḍ [LATIN SMALL LETTER D WITH DOT BELOW]
|
568 | | -"\u1E0D" => "d"
|
569 | | -
|
570 | | -# ḏ [LATIN SMALL LETTER D WITH LINE BELOW]
|
571 | | -"\u1E0F" => "d"
|
572 | | -
|
573 | | -# ḑ [LATIN SMALL LETTER D WITH CEDILLA]
|
574 | | -"\u1E11" => "d"
|
575 | | -
|
576 | | -# ḓ [LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW]
|
577 | | -"\u1E13" => "d"
|
578 | | -
|
579 | | -# ⓓ [CIRCLED LATIN SMALL LETTER D]
|
580 | | -"\u24D3" => "d"
|
581 | | -
|
582 | | -# ꝺ [LATIN SMALL LETTER INSULAR D]
|
583 | | -"\uA77A" => "d"
|
584 | | -
|
585 | | -# d [FULLWIDTH LATIN SMALL LETTER D]
|
586 | | -"\uFF44" => "d"
|
587 | | -
|
588 | | -# DŽ [LATIN CAPITAL LETTER DZ WITH CARON]
|
589 | | -"\u01C4" => "DZ"
|
590 | | -
|
591 | | -# DZ [LATIN CAPITAL LETTER DZ]
|
592 | | -"\u01F1" => "DZ"
|
593 | | -
|
594 | | -# Dž [LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON]
|
595 | | -"\u01C5" => "Dz"
|
596 | | -
|
597 | | -# Dz [LATIN CAPITAL LETTER D WITH SMALL LETTER Z]
|
598 | | -"\u01F2" => "Dz"
|
599 | | -
|
600 | | -# ⒟ [PARENTHESIZED LATIN SMALL LETTER D]
|
601 | | -"\u249F" => "(d)"
|
602 | | -
|
603 | | -# ȸ [LATIN SMALL LETTER DB DIGRAPH]
|
604 | | -"\u0238" => "db"
|
605 | | -
|
606 | | -# dž [LATIN SMALL LETTER DZ WITH CARON]
|
607 | | -"\u01C6" => "dz"
|
608 | | -
|
609 | | -# dz [LATIN SMALL LETTER DZ]
|
610 | | -"\u01F3" => "dz"
|
611 | | -
|
612 | | -# ʣ [LATIN SMALL LETTER DZ DIGRAPH]
|
613 | | -"\u02A3" => "dz"
|
614 | | -
|
615 | | -# ʥ [LATIN SMALL LETTER DZ DIGRAPH WITH CURL]
|
616 | | -"\u02A5" => "dz"
|
617 | | -
|
618 | | -# È [LATIN CAPITAL LETTER E WITH GRAVE]
|
619 | | -"\u00C8" => "E"
|
620 | | -
|
621 | | -# É [LATIN CAPITAL LETTER E WITH ACUTE]
|
622 | | -"\u00C9" => "E"
|
623 | | -
|
624 | | -# Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX]
|
625 | | -"\u00CA" => "E"
|
626 | | -
|
627 | | -# Ë [LATIN CAPITAL LETTER E WITH DIAERESIS]
|
628 | | -"\u00CB" => "E"
|
629 | | -
|
630 | | -# Ē [LATIN CAPITAL LETTER E WITH MACRON]
|
631 | | -"\u0112" => "E"
|
632 | | -
|
633 | | -# Ĕ [LATIN CAPITAL LETTER E WITH BREVE]
|
634 | | -"\u0114" => "E"
|
635 | | -
|
636 | | -# Ė [LATIN CAPITAL LETTER E WITH DOT ABOVE]
|
637 | | -"\u0116" => "E"
|
638 | | -
|
639 | | -# Ę [LATIN CAPITAL LETTER E WITH OGONEK]
|
640 | | -"\u0118" => "E"
|
641 | | -
|
642 | | -# Ě [LATIN CAPITAL LETTER E WITH CARON]
|
643 | | -"\u011A" => "E"
|
644 | | -
|
645 | | -# Ǝ [LATIN CAPITAL LETTER REVERSED E]
|
646 | | -"\u018E" => "E"
|
647 | | -
|
648 | | -# Ɛ [LATIN CAPITAL LETTER OPEN E]
|
649 | | -"\u0190" => "E"
|
650 | | -
|
651 | | -# Ȅ [LATIN CAPITAL LETTER E WITH DOUBLE GRAVE]
|
652 | | -"\u0204" => "E"
|
653 | | -
|
654 | | -# Ȇ [LATIN CAPITAL LETTER E WITH INVERTED BREVE]
|
655 | | -"\u0206" => "E"
|
656 | | -
|
657 | | -# Ȩ [LATIN CAPITAL LETTER E WITH CEDILLA]
|
658 | | -"\u0228" => "E"
|
659 | | -
|
660 | | -# Ɇ [LATIN CAPITAL LETTER E WITH STROKE]
|
661 | | -"\u0246" => "E"
|
662 | | -
|
663 | | -# ᴇ [LATIN LETTER SMALL CAPITAL E]
|
664 | | -"\u1D07" => "E"
|
665 | | -
|
666 | | -# Ḕ [LATIN CAPITAL LETTER E WITH MACRON AND GRAVE]
|
667 | | -"\u1E14" => "E"
|
668 | | -
|
669 | | -# Ḗ [LATIN CAPITAL LETTER E WITH MACRON AND ACUTE]
|
670 | | -"\u1E16" => "E"
|
671 | | -
|
672 | | -# Ḙ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW]
|
673 | | -"\u1E18" => "E"
|
674 | | -
|
675 | | -# Ḛ [LATIN CAPITAL LETTER E WITH TILDE BELOW]
|
676 | | -"\u1E1A" => "E"
|
677 | | -
|
678 | | -# Ḝ [LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE]
|
679 | | -"\u1E1C" => "E"
|
680 | | -
|
681 | | -# Ẹ [LATIN CAPITAL LETTER E WITH DOT BELOW]
|
682 | | -"\u1EB8" => "E"
|
683 | | -
|
684 | | -# Ẻ [LATIN CAPITAL LETTER E WITH HOOK ABOVE]
|
685 | | -"\u1EBA" => "E"
|
686 | | -
|
687 | | -# Ẽ [LATIN CAPITAL LETTER E WITH TILDE]
|
688 | | -"\u1EBC" => "E"
|
689 | | -
|
690 | | -# Ế [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE]
|
691 | | -"\u1EBE" => "E"
|
692 | | -
|
693 | | -# Ề [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE]
|
694 | | -"\u1EC0" => "E"
|
695 | | -
|
696 | | -# Ể [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE]
|
697 | | -"\u1EC2" => "E"
|
698 | | -
|
699 | | -# Ễ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE]
|
700 | | -"\u1EC4" => "E"
|
701 | | -
|
702 | | -# Ệ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW]
|
703 | | -"\u1EC6" => "E"
|
704 | | -
|
705 | | -# Ⓔ [CIRCLED LATIN CAPITAL LETTER E]
|
706 | | -"\u24BA" => "E"
|
707 | | -
|
708 | | -# ⱻ [LATIN LETTER SMALL CAPITAL TURNED E]
|
709 | | -"\u2C7B" => "E"
|
710 | | -
|
711 | | -# E [FULLWIDTH LATIN CAPITAL LETTER E]
|
712 | | -"\uFF25" => "E"
|
713 | | -
|
714 | | -# è [LATIN SMALL LETTER E WITH GRAVE]
|
715 | | -"\u00E8" => "e"
|
716 | | -
|
717 | | -# é [LATIN SMALL LETTER E WITH ACUTE]
|
718 | | -"\u00E9" => "e"
|
719 | | -
|
720 | | -# ê [LATIN SMALL LETTER E WITH CIRCUMFLEX]
|
721 | | -"\u00EA" => "e"
|
722 | | -
|
723 | | -# ë [LATIN SMALL LETTER E WITH DIAERESIS]
|
724 | | -"\u00EB" => "e"
|
725 | | -
|
726 | | -# ē [LATIN SMALL LETTER E WITH MACRON]
|
727 | | -"\u0113" => "e"
|
728 | | -
|
729 | | -# ĕ [LATIN SMALL LETTER E WITH BREVE]
|
730 | | -"\u0115" => "e"
|
731 | | -
|
732 | | -# ė [LATIN SMALL LETTER E WITH DOT ABOVE]
|
733 | | -"\u0117" => "e"
|
734 | | -
|
735 | | -# ę [LATIN SMALL LETTER E WITH OGONEK]
|
736 | | -"\u0119" => "e"
|
737 | | -
|
738 | | -# ě [LATIN SMALL LETTER E WITH CARON]
|
739 | | -"\u011B" => "e"
|
740 | | -
|
741 | | -# ǝ [LATIN SMALL LETTER TURNED E]
|
742 | | -"\u01DD" => "e"
|
743 | | -
|
744 | | -# ȅ [LATIN SMALL LETTER E WITH DOUBLE GRAVE]
|
745 | | -"\u0205" => "e"
|
746 | | -
|
747 | | -# ȇ [LATIN SMALL LETTER E WITH INVERTED BREVE]
|
748 | | -"\u0207" => "e"
|
749 | | -
|
750 | | -# ȩ [LATIN SMALL LETTER E WITH CEDILLA]
|
751 | | -"\u0229" => "e"
|
752 | | -
|
753 | | -# ɇ [LATIN SMALL LETTER E WITH STROKE]
|
754 | | -"\u0247" => "e"
|
755 | | -
|
756 | | -# ɘ [LATIN SMALL LETTER REVERSED E]
|
757 | | -"\u0258" => "e"
|
758 | | -
|
759 | | -# ɛ [LATIN SMALL LETTER OPEN E]
|
760 | | -"\u025B" => "e"
|
761 | | -
|
762 | | -# ɜ [LATIN SMALL LETTER REVERSED OPEN E]
|
763 | | -"\u025C" => "e"
|
764 | | -
|
765 | | -# ɝ [LATIN SMALL LETTER REVERSED OPEN E WITH HOOK]
|
766 | | -"\u025D" => "e"
|
767 | | -
|
768 | | -# ɞ [LATIN SMALL LETTER CLOSED REVERSED OPEN E]
|
769 | | -"\u025E" => "e"
|
770 | | -
|
771 | | -# ʚ [LATIN SMALL LETTER CLOSED OPEN E]
|
772 | | -"\u029A" => "e"
|
773 | | -
|
774 | | -# ᴈ [LATIN SMALL LETTER TURNED OPEN E]
|
775 | | -"\u1D08" => "e"
|
776 | | -
|
777 | | -# ᶒ [LATIN SMALL LETTER E WITH RETROFLEX HOOK]
|
778 | | -"\u1D92" => "e"
|
779 | | -
|
780 | | -# ᶓ [LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK]
|
781 | | -"\u1D93" => "e"
|
782 | | -
|
783 | | -# ᶔ [LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK]
|
784 | | -"\u1D94" => "e"
|
785 | | -
|
786 | | -# ḕ [LATIN SMALL LETTER E WITH MACRON AND GRAVE]
|
787 | | -"\u1E15" => "e"
|
788 | | -
|
789 | | -# ḗ [LATIN SMALL LETTER E WITH MACRON AND ACUTE]
|
790 | | -"\u1E17" => "e"
|
791 | | -
|
792 | | -# ḙ [LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW]
|
793 | | -"\u1E19" => "e"
|
794 | | -
|
795 | | -# ḛ [LATIN SMALL LETTER E WITH TILDE BELOW]
|
796 | | -"\u1E1B" => "e"
|
797 | | -
|
798 | | -# ḝ [LATIN SMALL LETTER E WITH CEDILLA AND BREVE]
|
799 | | -"\u1E1D" => "e"
|
800 | | -
|
801 | | -# ẹ [LATIN SMALL LETTER E WITH DOT BELOW]
|
802 | | -"\u1EB9" => "e"
|
803 | | -
|
804 | | -# ẻ [LATIN SMALL LETTER E WITH HOOK ABOVE]
|
805 | | -"\u1EBB" => "e"
|
806 | | -
|
807 | | -# ẽ [LATIN SMALL LETTER E WITH TILDE]
|
808 | | -"\u1EBD" => "e"
|
809 | | -
|
810 | | -# ế [LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE]
|
811 | | -"\u1EBF" => "e"
|
812 | | -
|
813 | | -# ề [LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE]
|
814 | | -"\u1EC1" => "e"
|
815 | | -
|
816 | | -# ể [LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE]
|
817 | | -"\u1EC3" => "e"
|
818 | | -
|
819 | | -# ễ [LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE]
|
820 | | -"\u1EC5" => "e"
|
821 | | -
|
822 | | -# ệ [LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW]
|
823 | | -"\u1EC7" => "e"
|
824 | | -
|
825 | | -# ₑ [LATIN SUBSCRIPT SMALL LETTER E]
|
826 | | -"\u2091" => "e"
|
827 | | -
|
828 | | -# ⓔ [CIRCLED LATIN SMALL LETTER E]
|
829 | | -"\u24D4" => "e"
|
830 | | -
|
831 | | -# ⱸ [LATIN SMALL LETTER E WITH NOTCH]
|
832 | | -"\u2C78" => "e"
|
833 | | -
|
834 | | -# e [FULLWIDTH LATIN SMALL LETTER E]
|
835 | | -"\uFF45" => "e"
|
836 | | -
|
837 | | -# ⒠ [PARENTHESIZED LATIN SMALL LETTER E]
|
838 | | -"\u24A0" => "(e)"
|
839 | | -
|
840 | | -# Ƒ [LATIN CAPITAL LETTER F WITH HOOK]
|
841 | | -"\u0191" => "F"
|
842 | | -
|
843 | | -# Ḟ [LATIN CAPITAL LETTER F WITH DOT ABOVE]
|
844 | | -"\u1E1E" => "F"
|
845 | | -
|
846 | | -# Ⓕ [CIRCLED LATIN CAPITAL LETTER F]
|
847 | | -"\u24BB" => "F"
|
848 | | -
|
849 | | -# ꜰ [LATIN LETTER SMALL CAPITAL F]
|
850 | | -"\uA730" => "F"
|
851 | | -
|
852 | | -# Ꝼ [LATIN CAPITAL LETTER INSULAR F]
|
853 | | -"\uA77B" => "F"
|
854 | | -
|
855 | | -# ꟻ [LATIN EPIGRAPHIC LETTER REVERSED F]
|
856 | | -"\uA7FB" => "F"
|
857 | | -
|
858 | | -# F [FULLWIDTH LATIN CAPITAL LETTER F]
|
859 | | -"\uFF26" => "F"
|
860 | | -
|
861 | | -# ƒ [LATIN SMALL LETTER F WITH HOOK]
|
862 | | -"\u0192" => "f"
|
863 | | -
|
864 | | -# ᵮ [LATIN SMALL LETTER F WITH MIDDLE TILDE]
|
865 | | -"\u1D6E" => "f"
|
866 | | -
|
867 | | -# ᶂ [LATIN SMALL LETTER F WITH PALATAL HOOK]
|
868 | | -"\u1D82" => "f"
|
869 | | -
|
870 | | -# ḟ [LATIN SMALL LETTER F WITH DOT ABOVE]
|
871 | | -"\u1E1F" => "f"
|
872 | | -
|
873 | | -# ẛ [LATIN SMALL LETTER LONG S WITH DOT ABOVE]
|
874 | | -"\u1E9B" => "f"
|
875 | | -
|
876 | | -# ⓕ [CIRCLED LATIN SMALL LETTER F]
|
877 | | -"\u24D5" => "f"
|
878 | | -
|
879 | | -# ꝼ [LATIN SMALL LETTER INSULAR F]
|
880 | | -"\uA77C" => "f"
|
881 | | -
|
882 | | -# f [FULLWIDTH LATIN SMALL LETTER F]
|
883 | | -"\uFF46" => "f"
|
884 | | -
|
885 | | -# ⒡ [PARENTHESIZED LATIN SMALL LETTER F]
|
886 | | -"\u24A1" => "(f)"
|
887 | | -
|
888 | | -# ff [LATIN SMALL LIGATURE FF]
|
889 | | -"\uFB00" => "ff"
|
890 | | -
|
891 | | -# ffi [LATIN SMALL LIGATURE FFI]
|
892 | | -"\uFB03" => "ffi"
|
893 | | -
|
894 | | -# ffl [LATIN SMALL LIGATURE FFL]
|
895 | | -"\uFB04" => "ffl"
|
896 | | -
|
897 | | -# fi [LATIN SMALL LIGATURE FI]
|
898 | | -"\uFB01" => "fi"
|
899 | | -
|
900 | | -# fl [LATIN SMALL LIGATURE FL]
|
901 | | -"\uFB02" => "fl"
|
902 | | -
|
903 | | -# Ĝ [LATIN CAPITAL LETTER G WITH CIRCUMFLEX]
|
904 | | -"\u011C" => "G"
|
905 | | -
|
906 | | -# Ğ [LATIN CAPITAL LETTER G WITH BREVE]
|
907 | | -"\u011E" => "G"
|
908 | | -
|
909 | | -# Ġ [LATIN CAPITAL LETTER G WITH DOT ABOVE]
|
910 | | -"\u0120" => "G"
|
911 | | -
|
912 | | -# Ģ [LATIN CAPITAL LETTER G WITH CEDILLA]
|
913 | | -"\u0122" => "G"
|
914 | | -
|
915 | | -# Ɠ [LATIN CAPITAL LETTER G WITH HOOK]
|
916 | | -"\u0193" => "G"
|
917 | | -
|
918 | | -# Ǥ [LATIN CAPITAL LETTER G WITH STROKE]
|
919 | | -"\u01E4" => "G"
|
920 | | -
|
921 | | -# ǥ [LATIN SMALL LETTER G WITH STROKE]
|
922 | | -"\u01E5" => "G"
|
923 | | -
|
924 | | -# Ǧ [LATIN CAPITAL LETTER G WITH CARON]
|
925 | | -"\u01E6" => "G"
|
926 | | -
|
927 | | -# ǧ [LATIN SMALL LETTER G WITH CARON]
|
928 | | -"\u01E7" => "G"
|
929 | | -
|
930 | | -# Ǵ [LATIN CAPITAL LETTER G WITH ACUTE]
|
931 | | -"\u01F4" => "G"
|
932 | | -
|
933 | | -# ɢ [LATIN LETTER SMALL CAPITAL G]
|
934 | | -"\u0262" => "G"
|
935 | | -
|
936 | | -# ʛ [LATIN LETTER SMALL CAPITAL G WITH HOOK]
|
937 | | -"\u029B" => "G"
|
938 | | -
|
939 | | -# Ḡ [LATIN CAPITAL LETTER G WITH MACRON]
|
940 | | -"\u1E20" => "G"
|
941 | | -
|
942 | | -# Ⓖ [CIRCLED LATIN CAPITAL LETTER G]
|
943 | | -"\u24BC" => "G"
|
944 | | -
|
945 | | -# Ᵹ [LATIN CAPITAL LETTER INSULAR G]
|
946 | | -"\uA77D" => "G"
|
947 | | -
|
948 | | -# Ꝿ [LATIN CAPITAL LETTER TURNED INSULAR G]
|
949 | | -"\uA77E" => "G"
|
950 | | -
|
951 | | -# G [FULLWIDTH LATIN CAPITAL LETTER G]
|
952 | | -"\uFF27" => "G"
|
953 | | -
|
954 | | -# ĝ [LATIN SMALL LETTER G WITH CIRCUMFLEX]
|
955 | | -"\u011D" => "g"
|
956 | | -
|
957 | | -# ğ [LATIN SMALL LETTER G WITH BREVE]
|
958 | | -"\u011F" => "g"
|
959 | | -
|
960 | | -# ġ [LATIN SMALL LETTER G WITH DOT ABOVE]
|
961 | | -"\u0121" => "g"
|
962 | | -
|
963 | | -# ģ [LATIN SMALL LETTER G WITH CEDILLA]
|
964 | | -"\u0123" => "g"
|
965 | | -
|
966 | | -# ǵ [LATIN SMALL LETTER G WITH ACUTE]
|
967 | | -"\u01F5" => "g"
|
968 | | -
|
969 | | -# ɠ [LATIN SMALL LETTER G WITH HOOK]
|
970 | | -"\u0260" => "g"
|
971 | | -
|
972 | | -# ɡ [LATIN SMALL LETTER SCRIPT G]
|
973 | | -"\u0261" => "g"
|
974 | | -
|
975 | | -# ᵷ [LATIN SMALL LETTER TURNED G]
|
976 | | -"\u1D77" => "g"
|
977 | | -
|
978 | | -# ᵹ [LATIN SMALL LETTER INSULAR G]
|
979 | | -"\u1D79" => "g"
|
980 | | -
|
981 | | -# ᶃ [LATIN SMALL LETTER G WITH PALATAL HOOK]
|
982 | | -"\u1D83" => "g"
|
983 | | -
|
984 | | -# ḡ [LATIN SMALL LETTER G WITH MACRON]
|
985 | | -"\u1E21" => "g"
|
986 | | -
|
987 | | -# ⓖ [CIRCLED LATIN SMALL LETTER G]
|
988 | | -"\u24D6" => "g"
|
989 | | -
|
990 | | -# ꝿ [LATIN SMALL LETTER TURNED INSULAR G]
|
991 | | -"\uA77F" => "g"
|
992 | | -
|
993 | | -# g [FULLWIDTH LATIN SMALL LETTER G]
|
994 | | -"\uFF47" => "g"
|
995 | | -
|
996 | | -# ⒢ [PARENTHESIZED LATIN SMALL LETTER G]
|
997 | | -"\u24A2" => "(g)"
|
998 | | -
|
999 | | -# Ĥ [LATIN CAPITAL LETTER H WITH CIRCUMFLEX]
|
1000 | | -"\u0124" => "H"
|
1001 | | -
|
1002 | | -# Ħ [LATIN CAPITAL LETTER H WITH STROKE]
|
1003 | | -"\u0126" => "H"
|
1004 | | -
|
1005 | | -# Ȟ [LATIN CAPITAL LETTER H WITH CARON]
|
1006 | | -"\u021E" => "H"
|
1007 | | -
|
1008 | | -# ʜ [LATIN LETTER SMALL CAPITAL H]
|
1009 | | -"\u029C" => "H"
|
1010 | | -
|
1011 | | -# Ḣ [LATIN CAPITAL LETTER H WITH DOT ABOVE]
|
1012 | | -"\u1E22" => "H"
|
1013 | | -
|
1014 | | -# Ḥ [LATIN CAPITAL LETTER H WITH DOT BELOW]
|
1015 | | -"\u1E24" => "H"
|
1016 | | -
|
1017 | | -# Ḧ [LATIN CAPITAL LETTER H WITH DIAERESIS]
|
1018 | | -"\u1E26" => "H"
|
1019 | | -
|
1020 | | -# Ḩ [LATIN CAPITAL LETTER H WITH CEDILLA]
|
1021 | | -"\u1E28" => "H"
|
1022 | | -
|
1023 | | -# Ḫ [LATIN CAPITAL LETTER H WITH BREVE BELOW]
|
1024 | | -"\u1E2A" => "H"
|
1025 | | -
|
1026 | | -# Ⓗ [CIRCLED LATIN CAPITAL LETTER H]
|
1027 | | -"\u24BD" => "H"
|
1028 | | -
|
1029 | | -# Ⱨ [LATIN CAPITAL LETTER H WITH DESCENDER]
|
1030 | | -"\u2C67" => "H"
|
1031 | | -
|
1032 | | -# Ⱶ [LATIN CAPITAL LETTER HALF H]
|
1033 | | -"\u2C75" => "H"
|
1034 | | -
|
1035 | | -# H [FULLWIDTH LATIN CAPITAL LETTER H]
|
1036 | | -"\uFF28" => "H"
|
1037 | | -
|
1038 | | -# ĥ [LATIN SMALL LETTER H WITH CIRCUMFLEX]
|
1039 | | -"\u0125" => "h"
|
1040 | | -
|
1041 | | -# ħ [LATIN SMALL LETTER H WITH STROKE]
|
1042 | | -"\u0127" => "h"
|
1043 | | -
|
1044 | | -# ȟ [LATIN SMALL LETTER H WITH CARON]
|
1045 | | -"\u021F" => "h"
|
1046 | | -
|
1047 | | -# ɥ [LATIN SMALL LETTER TURNED H]
|
1048 | | -"\u0265" => "h"
|
1049 | | -
|
1050 | | -# ɦ [LATIN SMALL LETTER H WITH HOOK]
|
1051 | | -"\u0266" => "h"
|
1052 | | -
|
1053 | | -# ʮ [LATIN SMALL LETTER TURNED H WITH FISHHOOK]
|
1054 | | -"\u02AE" => "h"
|
1055 | | -
|
1056 | | -# ʯ [LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL]
|
1057 | | -"\u02AF" => "h"
|
1058 | | -
|
1059 | | -# ḣ [LATIN SMALL LETTER H WITH DOT ABOVE]
|
1060 | | -"\u1E23" => "h"
|
1061 | | -
|
1062 | | -# ḥ [LATIN SMALL LETTER H WITH DOT BELOW]
|
1063 | | -"\u1E25" => "h"
|
1064 | | -
|
1065 | | -# ḧ [LATIN SMALL LETTER H WITH DIAERESIS]
|
1066 | | -"\u1E27" => "h"
|
1067 | | -
|
1068 | | -# ḩ [LATIN SMALL LETTER H WITH CEDILLA]
|
1069 | | -"\u1E29" => "h"
|
1070 | | -
|
1071 | | -# ḫ [LATIN SMALL LETTER H WITH BREVE BELOW]
|
1072 | | -"\u1E2B" => "h"
|
1073 | | -
|
1074 | | -# ẖ [LATIN SMALL LETTER H WITH LINE BELOW]
|
1075 | | -"\u1E96" => "h"
|
1076 | | -
|
1077 | | -# ⓗ [CIRCLED LATIN SMALL LETTER H]
|
1078 | | -"\u24D7" => "h"
|
1079 | | -
|
1080 | | -# ⱨ [LATIN SMALL LETTER H WITH DESCENDER]
|
1081 | | -"\u2C68" => "h"
|
1082 | | -
|
1083 | | -# ⱶ [LATIN SMALL LETTER HALF H]
|
1084 | | -"\u2C76" => "h"
|
1085 | | -
|
1086 | | -# h [FULLWIDTH LATIN SMALL LETTER H]
|
1087 | | -"\uFF48" => "h"
|
1088 | | -
|
1089 | | -# Ƕ http://en.wikipedia.org/wiki/Hwair [LATIN CAPITAL LETTER HWAIR]
|
1090 | | -"\u01F6" => "HV"
|
1091 | | -
|
1092 | | -# ⒣ [PARENTHESIZED LATIN SMALL LETTER H]
|
1093 | | -"\u24A3" => "(h)"
|
1094 | | -
|
1095 | | -# ƕ [LATIN SMALL LETTER HV]
|
1096 | | -"\u0195" => "hv"
|
1097 | | -
|
1098 | | -# Ì [LATIN CAPITAL LETTER I WITH GRAVE]
|
1099 | | -"\u00CC" => "I"
|
1100 | | -
|
1101 | | -# Í [LATIN CAPITAL LETTER I WITH ACUTE]
|
1102 | | -"\u00CD" => "I"
|
1103 | | -
|
1104 | | -# Î [LATIN CAPITAL LETTER I WITH CIRCUMFLEX]
|
1105 | | -"\u00CE" => "I"
|
1106 | | -
|
1107 | | -# Ï [LATIN CAPITAL LETTER I WITH DIAERESIS]
|
1108 | | -"\u00CF" => "I"
|
1109 | | -
|
1110 | | -# Ĩ [LATIN CAPITAL LETTER I WITH TILDE]
|
1111 | | -"\u0128" => "I"
|
1112 | | -
|
1113 | | -# Ī [LATIN CAPITAL LETTER I WITH MACRON]
|
1114 | | -"\u012A" => "I"
|
1115 | | -
|
1116 | | -# Ĭ [LATIN CAPITAL LETTER I WITH BREVE]
|
1117 | | -"\u012C" => "I"
|
1118 | | -
|
1119 | | -# Į [LATIN CAPITAL LETTER I WITH OGONEK]
|
1120 | | -"\u012E" => "I"
|
1121 | | -
|
1122 | | -# İ [LATIN CAPITAL LETTER I WITH DOT ABOVE]
|
1123 | | -"\u0130" => "I"
|
1124 | | -
|
1125 | | -# Ɩ [LATIN CAPITAL LETTER IOTA]
|
1126 | | -"\u0196" => "I"
|
1127 | | -
|
1128 | | -# Ɨ [LATIN CAPITAL LETTER I WITH STROKE]
|
1129 | | -"\u0197" => "I"
|
1130 | | -
|
1131 | | -# Ǐ [LATIN CAPITAL LETTER I WITH CARON]
|
1132 | | -"\u01CF" => "I"
|
1133 | | -
|
1134 | | -# Ȉ [LATIN CAPITAL LETTER I WITH DOUBLE GRAVE]
|
1135 | | -"\u0208" => "I"
|
1136 | | -
|
1137 | | -# Ȋ [LATIN CAPITAL LETTER I WITH INVERTED BREVE]
|
1138 | | -"\u020A" => "I"
|
1139 | | -
|
1140 | | -# ɪ [LATIN LETTER SMALL CAPITAL I]
|
1141 | | -"\u026A" => "I"
|
1142 | | -
|
1143 | | -# ᵻ [LATIN SMALL CAPITAL LETTER I WITH STROKE]
|
1144 | | -"\u1D7B" => "I"
|
1145 | | -
|
1146 | | -# Ḭ [LATIN CAPITAL LETTER I WITH TILDE BELOW]
|
1147 | | -"\u1E2C" => "I"
|
1148 | | -
|
1149 | | -# Ḯ [LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE]
|
1150 | | -"\u1E2E" => "I"
|
1151 | | -
|
1152 | | -# Ỉ [LATIN CAPITAL LETTER I WITH HOOK ABOVE]
|
1153 | | -"\u1EC8" => "I"
|
1154 | | -
|
1155 | | -# Ị [LATIN CAPITAL LETTER I WITH DOT BELOW]
|
1156 | | -"\u1ECA" => "I"
|
1157 | | -
|
1158 | | -# Ⓘ [CIRCLED LATIN CAPITAL LETTER I]
|
1159 | | -"\u24BE" => "I"
|
1160 | | -
|
1161 | | -# ꟾ [LATIN EPIGRAPHIC LETTER I LONGA]
|
1162 | | -"\uA7FE" => "I"
|
1163 | | -
|
1164 | | -# I [FULLWIDTH LATIN CAPITAL LETTER I]
|
1165 | | -"\uFF29" => "I"
|
1166 | | -
|
1167 | | -# ì [LATIN SMALL LETTER I WITH GRAVE]
|
1168 | | -"\u00EC" => "i"
|
1169 | | -
|
1170 | | -# í [LATIN SMALL LETTER I WITH ACUTE]
|
1171 | | -"\u00ED" => "i"
|
1172 | | -
|
1173 | | -# î [LATIN SMALL LETTER I WITH CIRCUMFLEX]
|
1174 | | -"\u00EE" => "i"
|
1175 | | -
|
1176 | | -# ï [LATIN SMALL LETTER I WITH DIAERESIS]
|
1177 | | -"\u00EF" => "i"
|
1178 | | -
|
1179 | | -# ĩ [LATIN SMALL LETTER I WITH TILDE]
|
1180 | | -"\u0129" => "i"
|
1181 | | -
|
1182 | | -# ī [LATIN SMALL LETTER I WITH MACRON]
|
1183 | | -"\u012B" => "i"
|
1184 | | -
|
1185 | | -# ĭ [LATIN SMALL LETTER I WITH BREVE]
|
1186 | | -"\u012D" => "i"
|
1187 | | -
|
1188 | | -# į [LATIN SMALL LETTER I WITH OGONEK]
|
1189 | | -"\u012F" => "i"
|
1190 | | -
|
1191 | | -# ı [LATIN SMALL LETTER DOTLESS I]
|
1192 | | -"\u0131" => "i"
|
1193 | | -
|
1194 | | -# ǐ [LATIN SMALL LETTER I WITH CARON]
|
1195 | | -"\u01D0" => "i"
|
1196 | | -
|
1197 | | -# ȉ [LATIN SMALL LETTER I WITH DOUBLE GRAVE]
|
1198 | | -"\u0209" => "i"
|
1199 | | -
|
1200 | | -# ȋ [LATIN SMALL LETTER I WITH INVERTED BREVE]
|
1201 | | -"\u020B" => "i"
|
1202 | | -
|
1203 | | -# ɨ [LATIN SMALL LETTER I WITH STROKE]
|
1204 | | -"\u0268" => "i"
|
1205 | | -
|
1206 | | -# ᴉ [LATIN SMALL LETTER TURNED I]
|
1207 | | -"\u1D09" => "i"
|
1208 | | -
|
1209 | | -# ᵢ [LATIN SUBSCRIPT SMALL LETTER I]
|
1210 | | -"\u1D62" => "i"
|
1211 | | -
|
1212 | | -# ᵼ [LATIN SMALL LETTER IOTA WITH STROKE]
|
1213 | | -"\u1D7C" => "i"
|
1214 | | -
|
1215 | | -# ᶖ [LATIN SMALL LETTER I WITH RETROFLEX HOOK]
|
1216 | | -"\u1D96" => "i"
|
1217 | | -
|
1218 | | -# ḭ [LATIN SMALL LETTER I WITH TILDE BELOW]
|
1219 | | -"\u1E2D" => "i"
|
1220 | | -
|
1221 | | -# ḯ [LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE]
|
1222 | | -"\u1E2F" => "i"
|
1223 | | -
|
1224 | | -# ỉ [LATIN SMALL LETTER I WITH HOOK ABOVE]
|
1225 | | -"\u1EC9" => "i"
|
1226 | | -
|
1227 | | -# ị [LATIN SMALL LETTER I WITH DOT BELOW]
|
1228 | | -"\u1ECB" => "i"
|
1229 | | -
|
1230 | | -# ⁱ [SUPERSCRIPT LATIN SMALL LETTER I]
|
1231 | | -"\u2071" => "i"
|
1232 | | -
|
1233 | | -# ⓘ [CIRCLED LATIN SMALL LETTER I]
|
1234 | | -"\u24D8" => "i"
|
1235 | | -
|
1236 | | -# i [FULLWIDTH LATIN SMALL LETTER I]
|
1237 | | -"\uFF49" => "i"
|
1238 | | -
|
1239 | | -# IJ [LATIN CAPITAL LIGATURE IJ]
|
1240 | | -"\u0132" => "IJ"
|
1241 | | -
|
1242 | | -# ⒤ [PARENTHESIZED LATIN SMALL LETTER I]
|
1243 | | -"\u24A4" => "(i)"
|
1244 | | -
|
1245 | | -# ij [LATIN SMALL LIGATURE IJ]
|
1246 | | -"\u0133" => "ij"
|
1247 | | -
|
1248 | | -# Ĵ [LATIN CAPITAL LETTER J WITH CIRCUMFLEX]
|
1249 | | -"\u0134" => "J"
|
1250 | | -
|
1251 | | -# Ɉ [LATIN CAPITAL LETTER J WITH STROKE]
|
1252 | | -"\u0248" => "J"
|
1253 | | -
|
1254 | | -# ᴊ [LATIN LETTER SMALL CAPITAL J]
|
1255 | | -"\u1D0A" => "J"
|
1256 | | -
|
1257 | | -# Ⓙ [CIRCLED LATIN CAPITAL LETTER J]
|
1258 | | -"\u24BF" => "J"
|
1259 | | -
|
1260 | | -# J [FULLWIDTH LATIN CAPITAL LETTER J]
|
1261 | | -"\uFF2A" => "J"
|
1262 | | -
|
1263 | | -# ĵ [LATIN SMALL LETTER J WITH CIRCUMFLEX]
|
1264 | | -"\u0135" => "j"
|
1265 | | -
|
1266 | | -# ǰ [LATIN SMALL LETTER J WITH CARON]
|
1267 | | -"\u01F0" => "j"
|
1268 | | -
|
1269 | | -# ȷ [LATIN SMALL LETTER DOTLESS J]
|
1270 | | -"\u0237" => "j"
|
1271 | | -
|
1272 | | -# ɉ [LATIN SMALL LETTER J WITH STROKE]
|
1273 | | -"\u0249" => "j"
|
1274 | | -
|
1275 | | -# ɟ [LATIN SMALL LETTER DOTLESS J WITH STROKE]
|
1276 | | -"\u025F" => "j"
|
1277 | | -
|
1278 | | -# ʄ [LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK]
|
1279 | | -"\u0284" => "j"
|
1280 | | -
|
1281 | | -# ʝ [LATIN SMALL LETTER J WITH CROSSED-TAIL]
|
1282 | | -"\u029D" => "j"
|
1283 | | -
|
1284 | | -# ⓙ [CIRCLED LATIN SMALL LETTER J]
|
1285 | | -"\u24D9" => "j"
|
1286 | | -
|
1287 | | -# ⱼ [LATIN SUBSCRIPT SMALL LETTER J]
|
1288 | | -"\u2C7C" => "j"
|
1289 | | -
|
1290 | | -# j [FULLWIDTH LATIN SMALL LETTER J]
|
1291 | | -"\uFF4A" => "j"
|
1292 | | -
|
1293 | | -# ⒥ [PARENTHESIZED LATIN SMALL LETTER J]
|
1294 | | -"\u24A5" => "(j)"
|
1295 | | -
|
1296 | | -# Ķ [LATIN CAPITAL LETTER K WITH CEDILLA]
|
1297 | | -"\u0136" => "K"
|
1298 | | -
|
1299 | | -# Ƙ [LATIN CAPITAL LETTER K WITH HOOK]
|
1300 | | -"\u0198" => "K"
|
1301 | | -
|
1302 | | -# Ǩ [LATIN CAPITAL LETTER K WITH CARON]
|
1303 | | -"\u01E8" => "K"
|
1304 | | -
|
1305 | | -# ᴋ [LATIN LETTER SMALL CAPITAL K]
|
1306 | | -"\u1D0B" => "K"
|
1307 | | -
|
1308 | | -# Ḱ [LATIN CAPITAL LETTER K WITH ACUTE]
|
1309 | | -"\u1E30" => "K"
|
1310 | | -
|
1311 | | -# Ḳ [LATIN CAPITAL LETTER K WITH DOT BELOW]
|
1312 | | -"\u1E32" => "K"
|
1313 | | -
|
1314 | | -# Ḵ [LATIN CAPITAL LETTER K WITH LINE BELOW]
|
1315 | | -"\u1E34" => "K"
|
1316 | | -
|
1317 | | -# Ⓚ [CIRCLED LATIN CAPITAL LETTER K]
|
1318 | | -"\u24C0" => "K"
|
1319 | | -
|
1320 | | -# Ⱪ [LATIN CAPITAL LETTER K WITH DESCENDER]
|
1321 | | -"\u2C69" => "K"
|
1322 | | -
|
1323 | | -# Ꝁ [LATIN CAPITAL LETTER K WITH STROKE]
|
1324 | | -"\uA740" => "K"
|
1325 | | -
|
1326 | | -# Ꝃ [LATIN CAPITAL LETTER K WITH DIAGONAL STROKE]
|
1327 | | -"\uA742" => "K"
|
1328 | | -
|
1329 | | -# Ꝅ [LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE]
|
1330 | | -"\uA744" => "K"
|
1331 | | -
|
1332 | | -# K [FULLWIDTH LATIN CAPITAL LETTER K]
|
1333 | | -"\uFF2B" => "K"
|
1334 | | -
|
1335 | | -# ķ [LATIN SMALL LETTER K WITH CEDILLA]
|
1336 | | -"\u0137" => "k"
|
1337 | | -
|
1338 | | -# ƙ [LATIN SMALL LETTER K WITH HOOK]
|
1339 | | -"\u0199" => "k"
|
1340 | | -
|
1341 | | -# ǩ [LATIN SMALL LETTER K WITH CARON]
|
1342 | | -"\u01E9" => "k"
|
1343 | | -
|
1344 | | -# ʞ [LATIN SMALL LETTER TURNED K]
|
1345 | | -"\u029E" => "k"
|
1346 | | -
|
1347 | | -# ᶄ [LATIN SMALL LETTER K WITH PALATAL HOOK]
|
1348 | | -"\u1D84" => "k"
|
1349 | | -
|
1350 | | -# ḱ [LATIN SMALL LETTER K WITH ACUTE]
|
1351 | | -"\u1E31" => "k"
|
1352 | | -
|
1353 | | -# ḳ [LATIN SMALL LETTER K WITH DOT BELOW]
|
1354 | | -"\u1E33" => "k"
|
1355 | | -
|
1356 | | -# ḵ [LATIN SMALL LETTER K WITH LINE BELOW]
|
1357 | | -"\u1E35" => "k"
|
1358 | | -
|
1359 | | -# ⓚ [CIRCLED LATIN SMALL LETTER K]
|
1360 | | -"\u24DA" => "k"
|
1361 | | -
|
1362 | | -# ⱪ [LATIN SMALL LETTER K WITH DESCENDER]
|
1363 | | -"\u2C6A" => "k"
|
1364 | | -
|
1365 | | -# ꝁ [LATIN SMALL LETTER K WITH STROKE]
|
1366 | | -"\uA741" => "k"
|
1367 | | -
|
1368 | | -# ꝃ [LATIN SMALL LETTER K WITH DIAGONAL STROKE]
|
1369 | | -"\uA743" => "k"
|
1370 | | -
|
1371 | | -# ꝅ [LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE]
|
1372 | | -"\uA745" => "k"
|
1373 | | -
|
1374 | | -# k [FULLWIDTH LATIN SMALL LETTER K]
|
1375 | | -"\uFF4B" => "k"
|
1376 | | -
|
1377 | | -# ⒦ [PARENTHESIZED LATIN SMALL LETTER K]
|
1378 | | -"\u24A6" => "(k)"
|
1379 | | -
|
1380 | | -# Ĺ [LATIN CAPITAL LETTER L WITH ACUTE]
|
1381 | | -"\u0139" => "L"
|
1382 | | -
|
1383 | | -# Ļ [LATIN CAPITAL LETTER L WITH CEDILLA]
|
1384 | | -"\u013B" => "L"
|
1385 | | -
|
1386 | | -# Ľ [LATIN CAPITAL LETTER L WITH CARON]
|
1387 | | -"\u013D" => "L"
|
1388 | | -
|
1389 | | -# Ŀ [LATIN CAPITAL LETTER L WITH MIDDLE DOT]
|
1390 | | -"\u013F" => "L"
|
1391 | | -
|
1392 | | -# Ł [LATIN CAPITAL LETTER L WITH STROKE]
|
1393 | | -"\u0141" => "L"
|
1394 | | -
|
1395 | | -# Ƚ [LATIN CAPITAL LETTER L WITH BAR]
|
1396 | | -"\u023D" => "L"
|
1397 | | -
|
1398 | | -# ʟ [LATIN LETTER SMALL CAPITAL L]
|
1399 | | -"\u029F" => "L"
|
1400 | | -
|
1401 | | -# ᴌ [LATIN LETTER SMALL CAPITAL L WITH STROKE]
|
1402 | | -"\u1D0C" => "L"
|
1403 | | -
|
1404 | | -# Ḷ [LATIN CAPITAL LETTER L WITH DOT BELOW]
|
1405 | | -"\u1E36" => "L"
|
1406 | | -
|
1407 | | -# Ḹ [LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON]
|
1408 | | -"\u1E38" => "L"
|
1409 | | -
|
1410 | | -# Ḻ [LATIN CAPITAL LETTER L WITH LINE BELOW]
|
1411 | | -"\u1E3A" => "L"
|
1412 | | -
|
1413 | | -# Ḽ [LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW]
|
1414 | | -"\u1E3C" => "L"
|
1415 | | -
|
1416 | | -# Ⓛ [CIRCLED LATIN CAPITAL LETTER L]
|
1417 | | -"\u24C1" => "L"
|
1418 | | -
|
1419 | | -# Ⱡ [LATIN CAPITAL LETTER L WITH DOUBLE BAR]
|
1420 | | -"\u2C60" => "L"
|
1421 | | -
|
1422 | | -# Ɫ [LATIN CAPITAL LETTER L WITH MIDDLE TILDE]
|
1423 | | -"\u2C62" => "L"
|
1424 | | -
|
1425 | | -# Ꝇ [LATIN CAPITAL LETTER BROKEN L]
|
1426 | | -"\uA746" => "L"
|
1427 | | -
|
1428 | | -# Ꝉ [LATIN CAPITAL LETTER L WITH HIGH STROKE]
|
1429 | | -"\uA748" => "L"
|
1430 | | -
|
1431 | | -# Ꞁ [LATIN CAPITAL LETTER TURNED L]
|
1432 | | -"\uA780" => "L"
|
1433 | | -
|
1434 | | -# L [FULLWIDTH LATIN CAPITAL LETTER L]
|
1435 | | -"\uFF2C" => "L"
|
1436 | | -
|
1437 | | -# ĺ [LATIN SMALL LETTER L WITH ACUTE]
|
1438 | | -"\u013A" => "l"
|
1439 | | -
|
1440 | | -# ļ [LATIN SMALL LETTER L WITH CEDILLA]
|
1441 | | -"\u013C" => "l"
|
1442 | | -
|
1443 | | -# ľ [LATIN SMALL LETTER L WITH CARON]
|
1444 | | -"\u013E" => "l"
|
1445 | | -
|
1446 | | -# ŀ [LATIN SMALL LETTER L WITH MIDDLE DOT]
|
1447 | | -"\u0140" => "l"
|
1448 | | -
|
1449 | | -# ł [LATIN SMALL LETTER L WITH STROKE]
|
1450 | | -"\u0142" => "l"
|
1451 | | -
|
1452 | | -# ƚ [LATIN SMALL LETTER L WITH BAR]
|
1453 | | -"\u019A" => "l"
|
1454 | | -
|
1455 | | -# ȴ [LATIN SMALL LETTER L WITH CURL]
|
1456 | | -"\u0234" => "l"
|
1457 | | -
|
1458 | | -# ɫ [LATIN SMALL LETTER L WITH MIDDLE TILDE]
|
1459 | | -"\u026B" => "l"
|
1460 | | -
|
1461 | | -# ɬ [LATIN SMALL LETTER L WITH BELT]
|
1462 | | -"\u026C" => "l"
|
1463 | | -
|
1464 | | -# ɭ [LATIN SMALL LETTER L WITH RETROFLEX HOOK]
|
1465 | | -"\u026D" => "l"
|
1466 | | -
|
1467 | | -# ᶅ [LATIN SMALL LETTER L WITH PALATAL HOOK]
|
1468 | | -"\u1D85" => "l"
|
1469 | | -
|
1470 | | -# ḷ [LATIN SMALL LETTER L WITH DOT BELOW]
|
1471 | | -"\u1E37" => "l"
|
1472 | | -
|
1473 | | -# ḹ [LATIN SMALL LETTER L WITH DOT BELOW AND MACRON]
|
1474 | | -"\u1E39" => "l"
|
1475 | | -
|
1476 | | -# ḻ [LATIN SMALL LETTER L WITH LINE BELOW]
|
1477 | | -"\u1E3B" => "l"
|
1478 | | -
|
1479 | | -# ḽ [LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW]
|
1480 | | -"\u1E3D" => "l"
|
1481 | | -
|
1482 | | -# ⓛ [CIRCLED LATIN SMALL LETTER L]
|
1483 | | -"\u24DB" => "l"
|
1484 | | -
|
1485 | | -# ⱡ [LATIN SMALL LETTER L WITH DOUBLE BAR]
|
1486 | | -"\u2C61" => "l"
|
1487 | | -
|
1488 | | -# ꝇ [LATIN SMALL LETTER BROKEN L]
|
1489 | | -"\uA747" => "l"
|
1490 | | -
|
1491 | | -# ꝉ [LATIN SMALL LETTER L WITH HIGH STROKE]
|
1492 | | -"\uA749" => "l"
|
1493 | | -
|
1494 | | -# ꞁ [LATIN SMALL LETTER TURNED L]
|
1495 | | -"\uA781" => "l"
|
1496 | | -
|
1497 | | -# l [FULLWIDTH LATIN SMALL LETTER L]
|
1498 | | -"\uFF4C" => "l"
|
1499 | | -
|
1500 | | -# LJ [LATIN CAPITAL LETTER LJ]
|
1501 | | -"\u01C7" => "LJ"
|
1502 | | -
|
1503 | | -# Ỻ [LATIN CAPITAL LETTER MIDDLE-WELSH LL]
|
1504 | | -"\u1EFA" => "LL"
|
1505 | | -
|
1506 | | -# Lj [LATIN CAPITAL LETTER L WITH SMALL LETTER J]
|
1507 | | -"\u01C8" => "Lj"
|
1508 | | -
|
1509 | | -# ⒧ [PARENTHESIZED LATIN SMALL LETTER L]
|
1510 | | -"\u24A7" => "(l)"
|
1511 | | -
|
1512 | | -# lj [LATIN SMALL LETTER LJ]
|
1513 | | -"\u01C9" => "lj"
|
1514 | | -
|
1515 | | -# ỻ [LATIN SMALL LETTER MIDDLE-WELSH LL]
|
1516 | | -"\u1EFB" => "ll"
|
1517 | | -
|
1518 | | -# ʪ [LATIN SMALL LETTER LS DIGRAPH]
|
1519 | | -"\u02AA" => "ls"
|
1520 | | -
|
1521 | | -# ʫ [LATIN SMALL LETTER LZ DIGRAPH]
|
1522 | | -"\u02AB" => "lz"
|
1523 | | -
|
1524 | | -# Ɯ [LATIN CAPITAL LETTER TURNED M]
|
1525 | | -"\u019C" => "M"
|
1526 | | -
|
1527 | | -# ᴍ [LATIN LETTER SMALL CAPITAL M]
|
1528 | | -"\u1D0D" => "M"
|
1529 | | -
|
1530 | | -# Ḿ [LATIN CAPITAL LETTER M WITH ACUTE]
|
1531 | | -"\u1E3E" => "M"
|
1532 | | -
|
1533 | | -# Ṁ [LATIN CAPITAL LETTER M WITH DOT ABOVE]
|
1534 | | -"\u1E40" => "M"
|
1535 | | -
|
1536 | | -# Ṃ [LATIN CAPITAL LETTER M WITH DOT BELOW]
|
1537 | | -"\u1E42" => "M"
|
1538 | | -
|
1539 | | -# Ⓜ [CIRCLED LATIN CAPITAL LETTER M]
|
1540 | | -"\u24C2" => "M"
|
1541 | | -
|
1542 | | -# Ɱ [LATIN CAPITAL LETTER M WITH HOOK]
|
1543 | | -"\u2C6E" => "M"
|
1544 | | -
|
1545 | | -# ꟽ [LATIN EPIGRAPHIC LETTER INVERTED M]
|
1546 | | -"\uA7FD" => "M"
|
1547 | | -
|
1548 | | -# ꟿ [LATIN EPIGRAPHIC LETTER ARCHAIC M]
|
1549 | | -"\uA7FF" => "M"
|
1550 | | -
|
1551 | | -# M [FULLWIDTH LATIN CAPITAL LETTER M]
|
1552 | | -"\uFF2D" => "M"
|
1553 | | -
|
1554 | | -# ɯ [LATIN SMALL LETTER TURNED M]
|
1555 | | -"\u026F" => "m"
|
1556 | | -
|
1557 | | -# ɰ [LATIN SMALL LETTER TURNED M WITH LONG LEG]
|
1558 | | -"\u0270" => "m"
|
1559 | | -
|
1560 | | -# ɱ [LATIN SMALL LETTER M WITH HOOK]
|
1561 | | -"\u0271" => "m"
|
1562 | | -
|
1563 | | -# ᵯ [LATIN SMALL LETTER M WITH MIDDLE TILDE]
|
1564 | | -"\u1D6F" => "m"
|
1565 | | -
|
1566 | | -# ᶆ [LATIN SMALL LETTER M WITH PALATAL HOOK]
|
1567 | | -"\u1D86" => "m"
|
1568 | | -
|
1569 | | -# ḿ [LATIN SMALL LETTER M WITH ACUTE]
|
1570 | | -"\u1E3F" => "m"
|
1571 | | -
|
1572 | | -# ṁ [LATIN SMALL LETTER M WITH DOT ABOVE]
|
1573 | | -"\u1E41" => "m"
|
1574 | | -
|
1575 | | -# ṃ [LATIN SMALL LETTER M WITH DOT BELOW]
|
1576 | | -"\u1E43" => "m"
|
1577 | | -
|
1578 | | -# ⓜ [CIRCLED LATIN SMALL LETTER M]
|
1579 | | -"\u24DC" => "m"
|
1580 | | -
|
1581 | | -# m [FULLWIDTH LATIN SMALL LETTER M]
|
1582 | | -"\uFF4D" => "m"
|
1583 | | -
|
1584 | | -# ⒨ [PARENTHESIZED LATIN SMALL LETTER M]
|
1585 | | -"\u24A8" => "(m)"
|
1586 | | -
|
1587 | | -# Ñ [LATIN CAPITAL LETTER N WITH TILDE]
|
1588 | | -"\u00D1" => "N"
|
1589 | | -
|
1590 | | -# Ń [LATIN CAPITAL LETTER N WITH ACUTE]
|
1591 | | -"\u0143" => "N"
|
1592 | | -
|
1593 | | -# Ņ [LATIN CAPITAL LETTER N WITH CEDILLA]
|
1594 | | -"\u0145" => "N"
|
1595 | | -
|
1596 | | -# Ň [LATIN CAPITAL LETTER N WITH CARON]
|
1597 | | -"\u0147" => "N"
|
1598 | | -
|
1599 | | -# Ŋ http://en.wikipedia.org/wiki/Eng_(letter) [LATIN CAPITAL LETTER ENG]
|
1600 | | -"\u014A" => "N"
|
1601 | | -
|
1602 | | -# Ɲ [LATIN CAPITAL LETTER N WITH LEFT HOOK]
|
1603 | | -"\u019D" => "N"
|
1604 | | -
|
1605 | | -# Ǹ [LATIN CAPITAL LETTER N WITH GRAVE]
|
1606 | | -"\u01F8" => "N"
|
1607 | | -
|
1608 | | -# Ƞ [LATIN CAPITAL LETTER N WITH LONG RIGHT LEG]
|
1609 | | -"\u0220" => "N"
|
1610 | | -
|
1611 | | -# ɴ [LATIN LETTER SMALL CAPITAL N]
|
1612 | | -"\u0274" => "N"
|
1613 | | -
|
1614 | | -# ᴎ [LATIN LETTER SMALL CAPITAL REVERSED N]
|
1615 | | -"\u1D0E" => "N"
|
1616 | | -
|
1617 | | -# Ṅ [LATIN CAPITAL LETTER N WITH DOT ABOVE]
|
1618 | | -"\u1E44" => "N"
|
1619 | | -
|
1620 | | -# Ṇ [LATIN CAPITAL LETTER N WITH DOT BELOW]
|
1621 | | -"\u1E46" => "N"
|
1622 | | -
|
1623 | | -# Ṉ [LATIN CAPITAL LETTER N WITH LINE BELOW]
|
1624 | | -"\u1E48" => "N"
|
1625 | | -
|
1626 | | -# Ṋ [LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW]
|
1627 | | -"\u1E4A" => "N"
|
1628 | | -
|
1629 | | -# Ⓝ [CIRCLED LATIN CAPITAL LETTER N]
|
1630 | | -"\u24C3" => "N"
|
1631 | | -
|
1632 | | -# N [FULLWIDTH LATIN CAPITAL LETTER N]
|
1633 | | -"\uFF2E" => "N"
|
1634 | | -
|
1635 | | -# ñ [LATIN SMALL LETTER N WITH TILDE]
|
1636 | | -"\u00F1" => "n"
|
1637 | | -
|
1638 | | -# ń [LATIN SMALL LETTER N WITH ACUTE]
|
1639 | | -"\u0144" => "n"
|
1640 | | -
|
1641 | | -# ņ [LATIN SMALL LETTER N WITH CEDILLA]
|
1642 | | -"\u0146" => "n"
|
1643 | | -
|
1644 | | -# ň [LATIN SMALL LETTER N WITH CARON]
|
1645 | | -"\u0148" => "n"
|
1646 | | -
|
1647 | | -# ʼn [LATIN SMALL LETTER N PRECEDED BY APOSTROPHE]
|
1648 | | -"\u0149" => "n"
|
1649 | | -
|
1650 | | -# ŋ http://en.wikipedia.org/wiki/Eng_(letter) [LATIN SMALL LETTER ENG]
|
1651 | | -"\u014B" => "n"
|
1652 | | -
|
1653 | | -# ƞ [LATIN SMALL LETTER N WITH LONG RIGHT LEG]
|
1654 | | -"\u019E" => "n"
|
1655 | | -
|
1656 | | -# ǹ [LATIN SMALL LETTER N WITH GRAVE]
|
1657 | | -"\u01F9" => "n"
|
1658 | | -
|
1659 | | -# ȵ [LATIN SMALL LETTER N WITH CURL]
|
1660 | | -"\u0235" => "n"
|
1661 | | -
|
1662 | | -# ɲ [LATIN SMALL LETTER N WITH LEFT HOOK]
|
1663 | | -"\u0272" => "n"
|
1664 | | -
|
1665 | | -# ɳ [LATIN SMALL LETTER N WITH RETROFLEX HOOK]
|
1666 | | -"\u0273" => "n"
|
1667 | | -
|
1668 | | -# ᵰ [LATIN SMALL LETTER N WITH MIDDLE TILDE]
|
1669 | | -"\u1D70" => "n"
|
1670 | | -
|
1671 | | -# ᶇ [LATIN SMALL LETTER N WITH PALATAL HOOK]
|
1672 | | -"\u1D87" => "n"
|
1673 | | -
|
1674 | | -# ṅ [LATIN SMALL LETTER N WITH DOT ABOVE]
|
1675 | | -"\u1E45" => "n"
|
1676 | | -
|
1677 | | -# ṇ [LATIN SMALL LETTER N WITH DOT BELOW]
|
1678 | | -"\u1E47" => "n"
|
1679 | | -
|
1680 | | -# ṉ [LATIN SMALL LETTER N WITH LINE BELOW]
|
1681 | | -"\u1E49" => "n"
|
1682 | | -
|
1683 | | -# ṋ [LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW]
|
1684 | | -"\u1E4B" => "n"
|
1685 | | -
|
1686 | | -# ⁿ [SUPERSCRIPT LATIN SMALL LETTER N]
|
1687 | | -"\u207F" => "n"
|
1688 | | -
|
1689 | | -# ⓝ [CIRCLED LATIN SMALL LETTER N]
|
1690 | | -"\u24DD" => "n"
|
1691 | | -
|
1692 | | -# n [FULLWIDTH LATIN SMALL LETTER N]
|
1693 | | -"\uFF4E" => "n"
|
1694 | | -
|
1695 | | -# NJ [LATIN CAPITAL LETTER NJ]
|
1696 | | -"\u01CA" => "NJ"
|
1697 | | -
|
1698 | | -# Nj [LATIN CAPITAL LETTER N WITH SMALL LETTER J]
|
1699 | | -"\u01CB" => "Nj"
|
1700 | | -
|
1701 | | -# ⒩ [PARENTHESIZED LATIN SMALL LETTER N]
|
1702 | | -"\u24A9" => "(n)"
|
1703 | | -
|
1704 | | -# nj [LATIN SMALL LETTER NJ]
|
1705 | | -"\u01CC" => "nj"
|
1706 | | -
|
1707 | | -# Ò [LATIN CAPITAL LETTER O WITH GRAVE]
|
1708 | | -"\u00D2" => "O"
|
1709 | | -
|
1710 | | -# Ó [LATIN CAPITAL LETTER O WITH ACUTE]
|
1711 | | -"\u00D3" => "O"
|
1712 | | -
|
1713 | | -# Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX]
|
1714 | | -"\u00D4" => "O"
|
1715 | | -
|
1716 | | -# Õ [LATIN CAPITAL LETTER O WITH TILDE]
|
1717 | | -"\u00D5" => "O"
|
1718 | | -
|
1719 | | -# Ö [LATIN CAPITAL LETTER O WITH DIAERESIS]
|
1720 | | -"\u00D6" => "O"
|
1721 | | -
|
1722 | | -# Ø [LATIN CAPITAL LETTER O WITH STROKE]
|
1723 | | -"\u00D8" => "O"
|
1724 | | -
|
1725 | | -# Ō [LATIN CAPITAL LETTER O WITH MACRON]
|
1726 | | -"\u014C" => "O"
|
1727 | | -
|
1728 | | -# Ŏ [LATIN CAPITAL LETTER O WITH BREVE]
|
1729 | | -"\u014E" => "O"
|
1730 | | -
|
1731 | | -# Ő [LATIN CAPITAL LETTER O WITH DOUBLE ACUTE]
|
1732 | | -"\u0150" => "O"
|
1733 | | -
|
1734 | | -# Ɔ [LATIN CAPITAL LETTER OPEN O]
|
1735 | | -"\u0186" => "O"
|
1736 | | -
|
1737 | | -# Ɵ [LATIN CAPITAL LETTER O WITH MIDDLE TILDE]
|
1738 | | -"\u019F" => "O"
|
1739 | | -
|
1740 | | -# Ơ [LATIN CAPITAL LETTER O WITH HORN]
|
1741 | | -"\u01A0" => "O"
|
1742 | | -
|
1743 | | -# Ǒ [LATIN CAPITAL LETTER O WITH CARON]
|
1744 | | -"\u01D1" => "O"
|
1745 | | -
|
1746 | | -# Ǫ [LATIN CAPITAL LETTER O WITH OGONEK]
|
1747 | | -"\u01EA" => "O"
|
1748 | | -
|
1749 | | -# Ǭ [LATIN CAPITAL LETTER O WITH OGONEK AND MACRON]
|
1750 | | -"\u01EC" => "O"
|
1751 | | -
|
1752 | | -# Ǿ [LATIN CAPITAL LETTER O WITH STROKE AND ACUTE]
|
1753 | | -"\u01FE" => "O"
|
1754 | | -
|
1755 | | -# Ȍ [LATIN CAPITAL LETTER O WITH DOUBLE GRAVE]
|
1756 | | -"\u020C" => "O"
|
1757 | | -
|
1758 | | -# Ȏ [LATIN CAPITAL LETTER O WITH INVERTED BREVE]
|
1759 | | -"\u020E" => "O"
|
1760 | | -
|
1761 | | -# Ȫ [LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON]
|
1762 | | -"\u022A" => "O"
|
1763 | | -
|
1764 | | -# Ȭ [LATIN CAPITAL LETTER O WITH TILDE AND MACRON]
|
1765 | | -"\u022C" => "O"
|
1766 | | -
|
1767 | | -# Ȯ [LATIN CAPITAL LETTER O WITH DOT ABOVE]
|
1768 | | -"\u022E" => "O"
|
1769 | | -
|
1770 | | -# Ȱ [LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON]
|
1771 | | -"\u0230" => "O"
|
1772 | | -
|
1773 | | -# ᴏ [LATIN LETTER SMALL CAPITAL O]
|
1774 | | -"\u1D0F" => "O"
|
1775 | | -
|
1776 | | -# ᴐ [LATIN LETTER SMALL CAPITAL OPEN O]
|
1777 | | -"\u1D10" => "O"
|
1778 | | -
|
1779 | | -# Ṍ [LATIN CAPITAL LETTER O WITH TILDE AND ACUTE]
|
1780 | | -"\u1E4C" => "O"
|
1781 | | -
|
1782 | | -# Ṏ [LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS]
|
1783 | | -"\u1E4E" => "O"
|
1784 | | -
|
1785 | | -# Ṑ [LATIN CAPITAL LETTER O WITH MACRON AND GRAVE]
|
1786 | | -"\u1E50" => "O"
|
1787 | | -
|
1788 | | -# Ṓ [LATIN CAPITAL LETTER O WITH MACRON AND ACUTE]
|
1789 | | -"\u1E52" => "O"
|
1790 | | -
|
1791 | | -# Ọ [LATIN CAPITAL LETTER O WITH DOT BELOW]
|
1792 | | -"\u1ECC" => "O"
|
1793 | | -
|
1794 | | -# Ỏ [LATIN CAPITAL LETTER O WITH HOOK ABOVE]
|
1795 | | -"\u1ECE" => "O"
|
1796 | | -
|
1797 | | -# Ố [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE]
|
1798 | | -"\u1ED0" => "O"
|
1799 | | -
|
1800 | | -# Ồ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE]
|
1801 | | -"\u1ED2" => "O"
|
1802 | | -
|
1803 | | -# Ổ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE]
|
1804 | | -"\u1ED4" => "O"
|
1805 | | -
|
1806 | | -# Ỗ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE]
|
1807 | | -"\u1ED6" => "O"
|
1808 | | -
|
1809 | | -# Ộ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW]
|
1810 | | -"\u1ED8" => "O"
|
1811 | | -
|
1812 | | -# Ớ [LATIN CAPITAL LETTER O WITH HORN AND ACUTE]
|
1813 | | -"\u1EDA" => "O"
|
1814 | | -
|
1815 | | -# Ờ [LATIN CAPITAL LETTER O WITH HORN AND GRAVE]
|
1816 | | -"\u1EDC" => "O"
|
1817 | | -
|
1818 | | -# Ở [LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE]
|
1819 | | -"\u1EDE" => "O"
|
1820 | | -
|
1821 | | -# Ỡ [LATIN CAPITAL LETTER O WITH HORN AND TILDE]
|
1822 | | -"\u1EE0" => "O"
|
1823 | | -
|
1824 | | -# Ợ [LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW]
|
1825 | | -"\u1EE2" => "O"
|
1826 | | -
|
1827 | | -# Ⓞ [CIRCLED LATIN CAPITAL LETTER O]
|
1828 | | -"\u24C4" => "O"
|
1829 | | -
|
1830 | | -# Ꝋ [LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY]
|
1831 | | -"\uA74A" => "O"
|
1832 | | -
|
1833 | | -# Ꝍ [LATIN CAPITAL LETTER O WITH LOOP]
|
1834 | | -"\uA74C" => "O"
|
1835 | | -
|
1836 | | -# O [FULLWIDTH LATIN CAPITAL LETTER O]
|
1837 | | -"\uFF2F" => "O"
|
1838 | | -
|
1839 | | -# ò [LATIN SMALL LETTER O WITH GRAVE]
|
1840 | | -"\u00F2" => "o"
|
1841 | | -
|
1842 | | -# ó [LATIN SMALL LETTER O WITH ACUTE]
|
1843 | | -"\u00F3" => "o"
|
1844 | | -
|
1845 | | -# ô [LATIN SMALL LETTER O WITH CIRCUMFLEX]
|
1846 | | -"\u00F4" => "o"
|
1847 | | -
|
1848 | | -# õ [LATIN SMALL LETTER O WITH TILDE]
|
1849 | | -"\u00F5" => "o"
|
1850 | | -
|
1851 | | -# ö [LATIN SMALL LETTER O WITH DIAERESIS]
|
1852 | | -"\u00F6" => "o"
|
1853 | | -
|
1854 | | -# ø [LATIN SMALL LETTER O WITH STROKE]
|
1855 | | -"\u00F8" => "o"
|
1856 | | -
|
1857 | | -# ō [LATIN SMALL LETTER O WITH MACRON]
|
1858 | | -"\u014D" => "o"
|
1859 | | -
|
1860 | | -# ŏ [LATIN SMALL LETTER O WITH BREVE]
|
1861 | | -"\u014F" => "o"
|
1862 | | -
|
1863 | | -# ő [LATIN SMALL LETTER O WITH DOUBLE ACUTE]
|
1864 | | -"\u0151" => "o"
|
1865 | | -
|
1866 | | -# ơ [LATIN SMALL LETTER O WITH HORN]
|
1867 | | -"\u01A1" => "o"
|
1868 | | -
|
1869 | | -# ǒ [LATIN SMALL LETTER O WITH CARON]
|
1870 | | -"\u01D2" => "o"
|
1871 | | -
|
1872 | | -# ǫ [LATIN SMALL LETTER O WITH OGONEK]
|
1873 | | -"\u01EB" => "o"
|
1874 | | -
|
1875 | | -# ǭ [LATIN SMALL LETTER O WITH OGONEK AND MACRON]
|
1876 | | -"\u01ED" => "o"
|
1877 | | -
|
1878 | | -# ǿ [LATIN SMALL LETTER O WITH STROKE AND ACUTE]
|
1879 | | -"\u01FF" => "o"
|
1880 | | -
|
1881 | | -# ȍ [LATIN SMALL LETTER O WITH DOUBLE GRAVE]
|
1882 | | -"\u020D" => "o"
|
1883 | | -
|
1884 | | -# ȏ [LATIN SMALL LETTER O WITH INVERTED BREVE]
|
1885 | | -"\u020F" => "o"
|
1886 | | -
|
1887 | | -# ȫ [LATIN SMALL LETTER O WITH DIAERESIS AND MACRON]
|
1888 | | -"\u022B" => "o"
|
1889 | | -
|
1890 | | -# ȭ [LATIN SMALL LETTER O WITH TILDE AND MACRON]
|
1891 | | -"\u022D" => "o"
|
1892 | | -
|
1893 | | -# ȯ [LATIN SMALL LETTER O WITH DOT ABOVE]
|
1894 | | -"\u022F" => "o"
|
1895 | | -
|
1896 | | -# ȱ [LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON]
|
1897 | | -"\u0231" => "o"
|
1898 | | -
|
1899 | | -# ɔ [LATIN SMALL LETTER OPEN O]
|
1900 | | -"\u0254" => "o"
|
1901 | | -
|
1902 | | -# ɵ [LATIN SMALL LETTER BARRED O]
|
1903 | | -"\u0275" => "o"
|
1904 | | -
|
1905 | | -# ᴖ [LATIN SMALL LETTER TOP HALF O]
|
1906 | | -"\u1D16" => "o"
|
1907 | | -
|
1908 | | -# ᴗ [LATIN SMALL LETTER BOTTOM HALF O]
|
1909 | | -"\u1D17" => "o"
|
1910 | | -
|
1911 | | -# ᶗ [LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK]
|
1912 | | -"\u1D97" => "o"
|
1913 | | -
|
1914 | | -# ṍ [LATIN SMALL LETTER O WITH TILDE AND ACUTE]
|
1915 | | -"\u1E4D" => "o"
|
1916 | | -
|
1917 | | -# ṏ [LATIN SMALL LETTER O WITH TILDE AND DIAERESIS]
|
1918 | | -"\u1E4F" => "o"
|
1919 | | -
|
1920 | | -# ṑ [LATIN SMALL LETTER O WITH MACRON AND GRAVE]
|
1921 | | -"\u1E51" => "o"
|
1922 | | -
|
1923 | | -# ṓ [LATIN SMALL LETTER O WITH MACRON AND ACUTE]
|
1924 | | -"\u1E53" => "o"
|
1925 | | -
|
1926 | | -# ọ [LATIN SMALL LETTER O WITH DOT BELOW]
|
1927 | | -"\u1ECD" => "o"
|
1928 | | -
|
1929 | | -# ỏ [LATIN SMALL LETTER O WITH HOOK ABOVE]
|
1930 | | -"\u1ECF" => "o"
|
1931 | | -
|
1932 | | -# ố [LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE]
|
1933 | | -"\u1ED1" => "o"
|
1934 | | -
|
1935 | | -# ồ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE]
|
1936 | | -"\u1ED3" => "o"
|
1937 | | -
|
1938 | | -# ổ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE]
|
1939 | | -"\u1ED5" => "o"
|
1940 | | -
|
1941 | | -# ỗ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE]
|
1942 | | -"\u1ED7" => "o"
|
1943 | | -
|
1944 | | -# ộ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW]
|
1945 | | -"\u1ED9" => "o"
|
1946 | | -
|
1947 | | -# ớ [LATIN SMALL LETTER O WITH HORN AND ACUTE]
|
1948 | | -"\u1EDB" => "o"
|
1949 | | -
|
1950 | | -# ờ [LATIN SMALL LETTER O WITH HORN AND GRAVE]
|
1951 | | -"\u1EDD" => "o"
|
1952 | | -
|
1953 | | -# ở [LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE]
|
1954 | | -"\u1EDF" => "o"
|
1955 | | -
|
1956 | | -# ỡ [LATIN SMALL LETTER O WITH HORN AND TILDE]
|
1957 | | -"\u1EE1" => "o"
|
1958 | | -
|
1959 | | -# ợ [LATIN SMALL LETTER O WITH HORN AND DOT BELOW]
|
1960 | | -"\u1EE3" => "o"
|
1961 | | -
|
1962 | | -# ₒ [LATIN SUBSCRIPT SMALL LETTER O]
|
1963 | | -"\u2092" => "o"
|
1964 | | -
|
1965 | | -# ⓞ [CIRCLED LATIN SMALL LETTER O]
|
1966 | | -"\u24DE" => "o"
|
1967 | | -
|
1968 | | -# ⱺ [LATIN SMALL LETTER O WITH LOW RING INSIDE]
|
1969 | | -"\u2C7A" => "o"
|
1970 | | -
|
1971 | | -# ꝋ [LATIN SMALL LETTER O WITH LONG STROKE OVERLAY]
|
1972 | | -"\uA74B" => "o"
|
1973 | | -
|
1974 | | -# ꝍ [LATIN SMALL LETTER O WITH LOOP]
|
1975 | | -"\uA74D" => "o"
|
1976 | | -
|
1977 | | -# o [FULLWIDTH LATIN SMALL LETTER O]
|
1978 | | -"\uFF4F" => "o"
|
1979 | | -
|
1980 | | -# Œ [LATIN CAPITAL LIGATURE OE]
|
1981 | | -"\u0152" => "OE"
|
1982 | | -
|
1983 | | -# ɶ [LATIN LETTER SMALL CAPITAL OE]
|
1984 | | -"\u0276" => "OE"
|
1985 | | -
|
1986 | | -# Ꝏ [LATIN CAPITAL LETTER OO]
|
1987 | | -"\uA74E" => "OO"
|
1988 | | -
|
1989 | | -# Ȣ http://en.wikipedia.org/wiki/OU [LATIN CAPITAL LETTER OU]
|
1990 | | -"\u0222" => "OU"
|
1991 | | -
|
1992 | | -# ᴕ [LATIN LETTER SMALL CAPITAL OU]
|
1993 | | -"\u1D15" => "OU"
|
1994 | | -
|
1995 | | -# ⒪ [PARENTHESIZED LATIN SMALL LETTER O]
|
1996 | | -"\u24AA" => "(o)"
|
1997 | | -
|
1998 | | -# œ [LATIN SMALL LIGATURE OE]
|
1999 | | -"\u0153" => "oe"
|
2000 | | -
|
2001 | | -# ᴔ [LATIN SMALL LETTER TURNED OE]
|
2002 | | -"\u1D14" => "oe"
|
2003 | | -
|
2004 | | -# ꝏ [LATIN SMALL LETTER OO]
|
2005 | | -"\uA74F" => "oo"
|
2006 | | -
|
2007 | | -# ȣ http://en.wikipedia.org/wiki/OU [LATIN SMALL LETTER OU]
|
2008 | | -"\u0223" => "ou"
|
2009 | | -
|
2010 | | -# Ƥ [LATIN CAPITAL LETTER P WITH HOOK]
|
2011 | | -"\u01A4" => "P"
|
2012 | | -
|
2013 | | -# ᴘ [LATIN LETTER SMALL CAPITAL P]
|
2014 | | -"\u1D18" => "P"
|
2015 | | -
|
2016 | | -# Ṕ [LATIN CAPITAL LETTER P WITH ACUTE]
|
2017 | | -"\u1E54" => "P"
|
2018 | | -
|
2019 | | -# Ṗ [LATIN CAPITAL LETTER P WITH DOT ABOVE]
|
2020 | | -"\u1E56" => "P"
|
2021 | | -
|
2022 | | -# Ⓟ [CIRCLED LATIN CAPITAL LETTER P]
|
2023 | | -"\u24C5" => "P"
|
2024 | | -
|
2025 | | -# Ᵽ [LATIN CAPITAL LETTER P WITH STROKE]
|
2026 | | -"\u2C63" => "P"
|
2027 | | -
|
2028 | | -# Ꝑ [LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER]
|
2029 | | -"\uA750" => "P"
|
2030 | | -
|
2031 | | -# Ꝓ [LATIN CAPITAL LETTER P WITH FLOURISH]
|
2032 | | -"\uA752" => "P"
|
2033 | | -
|
2034 | | -# Ꝕ [LATIN CAPITAL LETTER P WITH SQUIRREL TAIL]
|
2035 | | -"\uA754" => "P"
|
2036 | | -
|
2037 | | -# P [FULLWIDTH LATIN CAPITAL LETTER P]
|
2038 | | -"\uFF30" => "P"
|
2039 | | -
|
2040 | | -# ƥ [LATIN SMALL LETTER P WITH HOOK]
|
2041 | | -"\u01A5" => "p"
|
2042 | | -
|
2043 | | -# ᵱ [LATIN SMALL LETTER P WITH MIDDLE TILDE]
|
2044 | | -"\u1D71" => "p"
|
2045 | | -
|
2046 | | -# ᵽ [LATIN SMALL LETTER P WITH STROKE]
|
2047 | | -"\u1D7D" => "p"
|
2048 | | -
|
2049 | | -# ᶈ [LATIN SMALL LETTER P WITH PALATAL HOOK]
|
2050 | | -"\u1D88" => "p"
|
2051 | | -
|
2052 | | -# ṕ [LATIN SMALL LETTER P WITH ACUTE]
|
2053 | | -"\u1E55" => "p"
|
2054 | | -
|
2055 | | -# ṗ [LATIN SMALL LETTER P WITH DOT ABOVE]
|
2056 | | -"\u1E57" => "p"
|
2057 | | -
|
2058 | | -# ⓟ [CIRCLED LATIN SMALL LETTER P]
|
2059 | | -"\u24DF" => "p"
|
2060 | | -
|
2061 | | -# ꝑ [LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER]
|
2062 | | -"\uA751" => "p"
|
2063 | | -
|
2064 | | -# ꝓ [LATIN SMALL LETTER P WITH FLOURISH]
|
2065 | | -"\uA753" => "p"
|
2066 | | -
|
2067 | | -# ꝕ [LATIN SMALL LETTER P WITH SQUIRREL TAIL]
|
2068 | | -"\uA755" => "p"
|
2069 | | -
|
2070 | | -# ꟼ [LATIN EPIGRAPHIC LETTER REVERSED P]
|
2071 | | -"\uA7FC" => "p"
|
2072 | | -
|
2073 | | -# p [FULLWIDTH LATIN SMALL LETTER P]
|
2074 | | -"\uFF50" => "p"
|
2075 | | -
|
2076 | | -# ⒫ [PARENTHESIZED LATIN SMALL LETTER P]
|
2077 | | -"\u24AB" => "(p)"
|
2078 | | -
|
2079 | | -# Ɋ [LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL]
|
2080 | | -"\u024A" => "Q"
|
2081 | | -
|
2082 | | -# Ⓠ [CIRCLED LATIN CAPITAL LETTER Q]
|
2083 | | -"\u24C6" => "Q"
|
2084 | | -
|
2085 | | -# Ꝗ [LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER]
|
2086 | | -"\uA756" => "Q"
|
2087 | | -
|
2088 | | -# Ꝙ [LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE]
|
2089 | | -"\uA758" => "Q"
|
2090 | | -
|
2091 | | -# Q [FULLWIDTH LATIN CAPITAL LETTER Q]
|
2092 | | -"\uFF31" => "Q"
|
2093 | | -
|
2094 | | -# ĸ http://en.wikipedia.org/wiki/Kra_(letter) [LATIN SMALL LETTER KRA]
|
2095 | | -"\u0138" => "q"
|
2096 | | -
|
2097 | | -# ɋ [LATIN SMALL LETTER Q WITH HOOK TAIL]
|
2098 | | -"\u024B" => "q"
|
2099 | | -
|
2100 | | -# ʠ [LATIN SMALL LETTER Q WITH HOOK]
|
2101 | | -"\u02A0" => "q"
|
2102 | | -
|
2103 | | -# ⓠ [CIRCLED LATIN SMALL LETTER Q]
|
2104 | | -"\u24E0" => "q"
|
2105 | | -
|
2106 | | -# ꝗ [LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER]
|
2107 | | -"\uA757" => "q"
|
2108 | | -
|
2109 | | -# ꝙ [LATIN SMALL LETTER Q WITH DIAGONAL STROKE]
|
2110 | | -"\uA759" => "q"
|
2111 | | -
|
2112 | | -# q [FULLWIDTH LATIN SMALL LETTER Q]
|
2113 | | -"\uFF51" => "q"
|
2114 | | -
|
2115 | | -# ⒬ [PARENTHESIZED LATIN SMALL LETTER Q]
|
2116 | | -"\u24AC" => "(q)"
|
2117 | | -
|
2118 | | -# ȹ [LATIN SMALL LETTER QP DIGRAPH]
|
2119 | | -"\u0239" => "qp"
|
2120 | | -
|
2121 | | -# Ŕ [LATIN CAPITAL LETTER R WITH ACUTE]
|
2122 | | -"\u0154" => "R"
|
2123 | | -
|
2124 | | -# Ŗ [LATIN CAPITAL LETTER R WITH CEDILLA]
|
2125 | | -"\u0156" => "R"
|
2126 | | -
|
2127 | | -# Ř [LATIN CAPITAL LETTER R WITH CARON]
|
2128 | | -"\u0158" => "R"
|
2129 | | -
|
2130 | | -# Ȓ [LATIN CAPITAL LETTER R WITH DOUBLE GRAVE]
|
2131 | | -"\u0210" => "R"
|
2132 | | -
|
2133 | | -# Ȓ [LATIN CAPITAL LETTER R WITH INVERTED BREVE]
|
2134 | | -"\u0212" => "R"
|
2135 | | -
|
2136 | | -# Ɍ [LATIN CAPITAL LETTER R WITH STROKE]
|
2137 | | -"\u024C" => "R"
|
2138 | | -
|
2139 | | -# ʀ [LATIN LETTER SMALL CAPITAL R]
|
2140 | | -"\u0280" => "R"
|
2141 | | -
|
2142 | | -# ʁ [LATIN LETTER SMALL CAPITAL INVERTED R]
|
2143 | | -"\u0281" => "R"
|
2144 | | -
|
2145 | | -# ᴙ [LATIN LETTER SMALL CAPITAL REVERSED R]
|
2146 | | -"\u1D19" => "R"
|
2147 | | -
|
2148 | | -# ᴚ [LATIN LETTER SMALL CAPITAL TURNED R]
|
2149 | | -"\u1D1A" => "R"
|
2150 | | -
|
2151 | | -# Ṙ [LATIN CAPITAL LETTER R WITH DOT ABOVE]
|
2152 | | -"\u1E58" => "R"
|
2153 | | -
|
2154 | | -# Ṛ [LATIN CAPITAL LETTER R WITH DOT BELOW]
|
2155 | | -"\u1E5A" => "R"
|
2156 | | -
|
2157 | | -# Ṝ [LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON]
|
2158 | | -"\u1E5C" => "R"
|
2159 | | -
|
2160 | | -# Ṟ [LATIN CAPITAL LETTER R WITH LINE BELOW]
|
2161 | | -"\u1E5E" => "R"
|
2162 | | -
|
2163 | | -# Ⓡ [CIRCLED LATIN CAPITAL LETTER R]
|
2164 | | -"\u24C7" => "R"
|
2165 | | -
|
2166 | | -# Ɽ [LATIN CAPITAL LETTER R WITH TAIL]
|
2167 | | -"\u2C64" => "R"
|
2168 | | -
|
2169 | | -# Ꝛ [LATIN CAPITAL LETTER R ROTUNDA]
|
2170 | | -"\uA75A" => "R"
|
2171 | | -
|
2172 | | -# Ꞃ [LATIN CAPITAL LETTER INSULAR R]
|
2173 | | -"\uA782" => "R"
|
2174 | | -
|
2175 | | -# R [FULLWIDTH LATIN CAPITAL LETTER R]
|
2176 | | -"\uFF32" => "R"
|
2177 | | -
|
2178 | | -# ŕ [LATIN SMALL LETTER R WITH ACUTE]
|
2179 | | -"\u0155" => "r"
|
2180 | | -
|
2181 | | -# ŗ [LATIN SMALL LETTER R WITH CEDILLA]
|
2182 | | -"\u0157" => "r"
|
2183 | | -
|
2184 | | -# ř [LATIN SMALL LETTER R WITH CARON]
|
2185 | | -"\u0159" => "r"
|
2186 | | -
|
2187 | | -# ȑ [LATIN SMALL LETTER R WITH DOUBLE GRAVE]
|
2188 | | -"\u0211" => "r"
|
2189 | | -
|
2190 | | -# ȓ [LATIN SMALL LETTER R WITH INVERTED BREVE]
|
2191 | | -"\u0213" => "r"
|
2192 | | -
|
2193 | | -# ɍ [LATIN SMALL LETTER R WITH STROKE]
|
2194 | | -"\u024D" => "r"
|
2195 | | -
|
2196 | | -# ɼ [LATIN SMALL LETTER R WITH LONG LEG]
|
2197 | | -"\u027C" => "r"
|
2198 | | -
|
2199 | | -# ɽ [LATIN SMALL LETTER R WITH TAIL]
|
2200 | | -"\u027D" => "r"
|
2201 | | -
|
2202 | | -# ɾ [LATIN SMALL LETTER R WITH FISHHOOK]
|
2203 | | -"\u027E" => "r"
|
2204 | | -
|
2205 | | -# ɿ [LATIN SMALL LETTER REVERSED R WITH FISHHOOK]
|
2206 | | -"\u027F" => "r"
|
2207 | | -
|
2208 | | -# ᵣ [LATIN SUBSCRIPT SMALL LETTER R]
|
2209 | | -"\u1D63" => "r"
|
2210 | | -
|
2211 | | -# ᵲ [LATIN SMALL LETTER R WITH MIDDLE TILDE]
|
2212 | | -"\u1D72" => "r"
|
2213 | | -
|
2214 | | -# ᵳ [LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE]
|
2215 | | -"\u1D73" => "r"
|
2216 | | -
|
2217 | | -# ᶉ [LATIN SMALL LETTER R WITH PALATAL HOOK]
|
2218 | | -"\u1D89" => "r"
|
2219 | | -
|
2220 | | -# ṙ [LATIN SMALL LETTER R WITH DOT ABOVE]
|
2221 | | -"\u1E59" => "r"
|
2222 | | -
|
2223 | | -# ṛ [LATIN SMALL LETTER R WITH DOT BELOW]
|
2224 | | -"\u1E5B" => "r"
|
2225 | | -
|
2226 | | -# ṝ [LATIN SMALL LETTER R WITH DOT BELOW AND MACRON]
|
2227 | | -"\u1E5D" => "r"
|
2228 | | -
|
2229 | | -# ṟ [LATIN SMALL LETTER R WITH LINE BELOW]
|
2230 | | -"\u1E5F" => "r"
|
2231 | | -
|
2232 | | -# ⓡ [CIRCLED LATIN SMALL LETTER R]
|
2233 | | -"\u24E1" => "r"
|
2234 | | -
|
2235 | | -# ꝛ [LATIN SMALL LETTER R ROTUNDA]
|
2236 | | -"\uA75B" => "r"
|
2237 | | -
|
2238 | | -# ꞃ [LATIN SMALL LETTER INSULAR R]
|
2239 | | -"\uA783" => "r"
|
2240 | | -
|
2241 | | -# r [FULLWIDTH LATIN SMALL LETTER R]
|
2242 | | -"\uFF52" => "r"
|
2243 | | -
|
2244 | | -# ⒭ [PARENTHESIZED LATIN SMALL LETTER R]
|
2245 | | -"\u24AD" => "(r)"
|
2246 | | -
|
2247 | | -# Ś [LATIN CAPITAL LETTER S WITH ACUTE]
|
2248 | | -"\u015A" => "S"
|
2249 | | -
|
2250 | | -# Ŝ [LATIN CAPITAL LETTER S WITH CIRCUMFLEX]
|
2251 | | -"\u015C" => "S"
|
2252 | | -
|
2253 | | -# Ş [LATIN CAPITAL LETTER S WITH CEDILLA]
|
2254 | | -"\u015E" => "S"
|
2255 | | -
|
2256 | | -# Š [LATIN CAPITAL LETTER S WITH CARON]
|
2257 | | -"\u0160" => "S"
|
2258 | | -
|
2259 | | -# Ș [LATIN CAPITAL LETTER S WITH COMMA BELOW]
|
2260 | | -"\u0218" => "S"
|
2261 | | -
|
2262 | | -# Ṡ [LATIN CAPITAL LETTER S WITH DOT ABOVE]
|
2263 | | -"\u1E60" => "S"
|
2264 | | -
|
2265 | | -# Ṣ [LATIN CAPITAL LETTER S WITH DOT BELOW]
|
2266 | | -"\u1E62" => "S"
|
2267 | | -
|
2268 | | -# Ṥ [LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE]
|
2269 | | -"\u1E64" => "S"
|
2270 | | -
|
2271 | | -# Ṧ [LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE]
|
2272 | | -"\u1E66" => "S"
|
2273 | | -
|
2274 | | -# Ṩ [LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE]
|
2275 | | -"\u1E68" => "S"
|
2276 | | -
|
2277 | | -# Ⓢ [CIRCLED LATIN CAPITAL LETTER S]
|
2278 | | -"\u24C8" => "S"
|
2279 | | -
|
2280 | | -# ꜱ [LATIN LETTER SMALL CAPITAL S]
|
2281 | | -"\uA731" => "S"
|
2282 | | -
|
2283 | | -# ꞅ [LATIN SMALL LETTER INSULAR S]
|
2284 | | -"\uA785" => "S"
|
2285 | | -
|
2286 | | -# S [FULLWIDTH LATIN CAPITAL LETTER S]
|
2287 | | -"\uFF33" => "S"
|
2288 | | -
|
2289 | | -# ś [LATIN SMALL LETTER S WITH ACUTE]
|
2290 | | -"\u015B" => "s"
|
2291 | | -
|
2292 | | -# ŝ [LATIN SMALL LETTER S WITH CIRCUMFLEX]
|
2293 | | -"\u015D" => "s"
|
2294 | | -
|
2295 | | -# ş [LATIN SMALL LETTER S WITH CEDILLA]
|
2296 | | -"\u015F" => "s"
|
2297 | | -
|
2298 | | -# š [LATIN SMALL LETTER S WITH CARON]
|
2299 | | -"\u0161" => "s"
|
2300 | | -
|
2301 | | -# ſ http://en.wikipedia.org/wiki/Long_S [LATIN SMALL LETTER LONG S]
|
2302 | | -"\u017F" => "s"
|
2303 | | -
|
2304 | | -# ș [LATIN SMALL LETTER S WITH COMMA BELOW]
|
2305 | | -"\u0219" => "s"
|
2306 | | -
|
2307 | | -# ȿ [LATIN SMALL LETTER S WITH SWASH TAIL]
|
2308 | | -"\u023F" => "s"
|
2309 | | -
|
2310 | | -# ʂ [LATIN SMALL LETTER S WITH HOOK]
|
2311 | | -"\u0282" => "s"
|
2312 | | -
|
2313 | | -# ᵴ [LATIN SMALL LETTER S WITH MIDDLE TILDE]
|
2314 | | -"\u1D74" => "s"
|
2315 | | -
|
2316 | | -# ᶊ [LATIN SMALL LETTER S WITH PALATAL HOOK]
|
2317 | | -"\u1D8A" => "s"
|
2318 | | -
|
2319 | | -# ṡ [LATIN SMALL LETTER S WITH DOT ABOVE]
|
2320 | | -"\u1E61" => "s"
|
2321 | | -
|
2322 | | -# ṣ [LATIN SMALL LETTER S WITH DOT BELOW]
|
2323 | | -"\u1E63" => "s"
|
2324 | | -
|
2325 | | -# ṥ [LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE]
|
2326 | | -"\u1E65" => "s"
|
2327 | | -
|
2328 | | -# ṧ [LATIN SMALL LETTER S WITH CARON AND DOT ABOVE]
|
2329 | | -"\u1E67" => "s"
|
2330 | | -
|
2331 | | -# ṩ [LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE]
|
2332 | | -"\u1E69" => "s"
|
2333 | | -
|
2334 | | -# ẜ [LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE]
|
2335 | | -"\u1E9C" => "s"
|
2336 | | -
|
2337 | | -# ẝ [LATIN SMALL LETTER LONG S WITH HIGH STROKE]
|
2338 | | -"\u1E9D" => "s"
|
2339 | | -
|
2340 | | -# ⓢ [CIRCLED LATIN SMALL LETTER S]
|
2341 | | -"\u24E2" => "s"
|
2342 | | -
|
2343 | | -# Ꞅ [LATIN CAPITAL LETTER INSULAR S]
|
2344 | | -"\uA784" => "s"
|
2345 | | -
|
2346 | | -# s [FULLWIDTH LATIN SMALL LETTER S]
|
2347 | | -"\uFF53" => "s"
|
2348 | | -
|
2349 | | -# ẞ [LATIN CAPITAL LETTER SHARP S]
|
2350 | | -"\u1E9E" => "SS"
|
2351 | | -
|
2352 | | -# ⒮ [PARENTHESIZED LATIN SMALL LETTER S]
|
2353 | | -"\u24AE" => "(s)"
|
2354 | | -
|
2355 | | -# ß [LATIN SMALL LETTER SHARP S]
|
2356 | | -"\u00DF" => "ss"
|
2357 | | -
|
2358 | | -# st [LATIN SMALL LIGATURE ST]
|
2359 | | -"\uFB06" => "st"
|
2360 | | -
|
2361 | | -# Ţ [LATIN CAPITAL LETTER T WITH CEDILLA]
|
2362 | | -"\u0162" => "T"
|
2363 | | -
|
2364 | | -# Ť [LATIN CAPITAL LETTER T WITH CARON]
|
2365 | | -"\u0164" => "T"
|
2366 | | -
|
2367 | | -# Ŧ [LATIN CAPITAL LETTER T WITH STROKE]
|
2368 | | -"\u0166" => "T"
|
2369 | | -
|
2370 | | -# Ƭ [LATIN CAPITAL LETTER T WITH HOOK]
|
2371 | | -"\u01AC" => "T"
|
2372 | | -
|
2373 | | -# Ʈ [LATIN CAPITAL LETTER T WITH RETROFLEX HOOK]
|
2374 | | -"\u01AE" => "T"
|
2375 | | -
|
2376 | | -# Ț [LATIN CAPITAL LETTER T WITH COMMA BELOW]
|
2377 | | -"\u021A" => "T"
|
2378 | | -
|
2379 | | -# Ⱦ [LATIN CAPITAL LETTER T WITH DIAGONAL STROKE]
|
2380 | | -"\u023E" => "T"
|
2381 | | -
|
2382 | | -# ᴛ [LATIN LETTER SMALL CAPITAL T]
|
2383 | | -"\u1D1B" => "T"
|
2384 | | -
|
2385 | | -# Ṫ [LATIN CAPITAL LETTER T WITH DOT ABOVE]
|
2386 | | -"\u1E6A" => "T"
|
2387 | | -
|
2388 | | -# Ṭ [LATIN CAPITAL LETTER T WITH DOT BELOW]
|
2389 | | -"\u1E6C" => "T"
|
2390 | | -
|
2391 | | -# Ṯ [LATIN CAPITAL LETTER T WITH LINE BELOW]
|
2392 | | -"\u1E6E" => "T"
|
2393 | | -
|
2394 | | -# Ṱ [LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW]
|
2395 | | -"\u1E70" => "T"
|
2396 | | -
|
2397 | | -# Ⓣ [CIRCLED LATIN CAPITAL LETTER T]
|
2398 | | -"\u24C9" => "T"
|
2399 | | -
|
2400 | | -# Ꞇ [LATIN CAPITAL LETTER INSULAR T]
|
2401 | | -"\uA786" => "T"
|
2402 | | -
|
2403 | | -# T [FULLWIDTH LATIN CAPITAL LETTER T]
|
2404 | | -"\uFF34" => "T"
|
2405 | | -
|
2406 | | -# ţ [LATIN SMALL LETTER T WITH CEDILLA]
|
2407 | | -"\u0163" => "t"
|
2408 | | -
|
2409 | | -# ť [LATIN SMALL LETTER T WITH CARON]
|
2410 | | -"\u0165" => "t"
|
2411 | | -
|
2412 | | -# ŧ [LATIN SMALL LETTER T WITH STROKE]
|
2413 | | -"\u0167" => "t"
|
2414 | | -
|
2415 | | -# ƫ [LATIN SMALL LETTER T WITH PALATAL HOOK]
|
2416 | | -"\u01AB" => "t"
|
2417 | | -
|
2418 | | -# ƭ [LATIN SMALL LETTER T WITH HOOK]
|
2419 | | -"\u01AD" => "t"
|
2420 | | -
|
2421 | | -# ț [LATIN SMALL LETTER T WITH COMMA BELOW]
|
2422 | | -"\u021B" => "t"
|
2423 | | -
|
2424 | | -# ȶ [LATIN SMALL LETTER T WITH CURL]
|
2425 | | -"\u0236" => "t"
|
2426 | | -
|
2427 | | -# ʇ [LATIN SMALL LETTER TURNED T]
|
2428 | | -"\u0287" => "t"
|
2429 | | -
|
2430 | | -# ʈ [LATIN SMALL LETTER T WITH RETROFLEX HOOK]
|
2431 | | -"\u0288" => "t"
|
2432 | | -
|
2433 | | -# ᵵ [LATIN SMALL LETTER T WITH MIDDLE TILDE]
|
2434 | | -"\u1D75" => "t"
|
2435 | | -
|
2436 | | -# ṫ [LATIN SMALL LETTER T WITH DOT ABOVE]
|
2437 | | -"\u1E6B" => "t"
|
2438 | | -
|
2439 | | -# ṭ [LATIN SMALL LETTER T WITH DOT BELOW]
|
2440 | | -"\u1E6D" => "t"
|
2441 | | -
|
2442 | | -# ṯ [LATIN SMALL LETTER T WITH LINE BELOW]
|
2443 | | -"\u1E6F" => "t"
|
2444 | | -
|
2445 | | -# ṱ [LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW]
|
2446 | | -"\u1E71" => "t"
|
2447 | | -
|
2448 | | -# ẗ [LATIN SMALL LETTER T WITH DIAERESIS]
|
2449 | | -"\u1E97" => "t"
|
2450 | | -
|
2451 | | -# ⓣ [CIRCLED LATIN SMALL LETTER T]
|
2452 | | -"\u24E3" => "t"
|
2453 | | -
|
2454 | | -# ⱦ [LATIN SMALL LETTER T WITH DIAGONAL STROKE]
|
2455 | | -"\u2C66" => "t"
|
2456 | | -
|
2457 | | -# t [FULLWIDTH LATIN SMALL LETTER T]
|
2458 | | -"\uFF54" => "t"
|
2459 | | -
|
2460 | | -# Þ [LATIN CAPITAL LETTER THORN]
|
2461 | | -"\u00DE" => "TH"
|
2462 | | -
|
2463 | | -# Ꝧ [LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER]
|
2464 | | -"\uA766" => "TH"
|
2465 | | -
|
2466 | | -# Ꜩ [LATIN CAPITAL LETTER TZ]
|
2467 | | -"\uA728" => "TZ"
|
2468 | | -
|
2469 | | -# ⒯ [PARENTHESIZED LATIN SMALL LETTER T]
|
2470 | | -"\u24AF" => "(t)"
|
2471 | | -
|
2472 | | -# ʨ [LATIN SMALL LETTER TC DIGRAPH WITH CURL]
|
2473 | | -"\u02A8" => "tc"
|
2474 | | -
|
2475 | | -# þ [LATIN SMALL LETTER THORN]
|
2476 | | -"\u00FE" => "th"
|
2477 | | -
|
2478 | | -# ᵺ [LATIN SMALL LETTER TH WITH STRIKETHROUGH]
|
2479 | | -"\u1D7A" => "th"
|
2480 | | -
|
2481 | | -# ꝧ [LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER]
|
2482 | | -"\uA767" => "th"
|
2483 | | -
|
2484 | | -# ʦ [LATIN SMALL LETTER TS DIGRAPH]
|
2485 | | -"\u02A6" => "ts"
|
2486 | | -
|
2487 | | -# ꜩ [LATIN SMALL LETTER TZ]
|
2488 | | -"\uA729" => "tz"
|
2489 | | -
|
2490 | | -# Ù [LATIN CAPITAL LETTER U WITH GRAVE]
|
2491 | | -"\u00D9" => "U"
|
2492 | | -
|
2493 | | -# Ú [LATIN CAPITAL LETTER U WITH ACUTE]
|
2494 | | -"\u00DA" => "U"
|
2495 | | -
|
2496 | | -# Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX]
|
2497 | | -"\u00DB" => "U"
|
2498 | | -
|
2499 | | -# Ü [LATIN CAPITAL LETTER U WITH DIAERESIS]
|
2500 | | -"\u00DC" => "U"
|
2501 | | -
|
2502 | | -# Ũ [LATIN CAPITAL LETTER U WITH TILDE]
|
2503 | | -"\u0168" => "U"
|
2504 | | -
|
2505 | | -# Ū [LATIN CAPITAL LETTER U WITH MACRON]
|
2506 | | -"\u016A" => "U"
|
2507 | | -
|
2508 | | -# Ŭ [LATIN CAPITAL LETTER U WITH BREVE]
|
2509 | | -"\u016C" => "U"
|
2510 | | -
|
2511 | | -# Ů [LATIN CAPITAL LETTER U WITH RING ABOVE]
|
2512 | | -"\u016E" => "U"
|
2513 | | -
|
2514 | | -# Ű [LATIN CAPITAL LETTER U WITH DOUBLE ACUTE]
|
2515 | | -"\u0170" => "U"
|
2516 | | -
|
2517 | | -# Ų [LATIN CAPITAL LETTER U WITH OGONEK]
|
2518 | | -"\u0172" => "U"
|
2519 | | -
|
2520 | | -# Ư [LATIN CAPITAL LETTER U WITH HORN]
|
2521 | | -"\u01AF" => "U"
|
2522 | | -
|
2523 | | -# Ǔ [LATIN CAPITAL LETTER U WITH CARON]
|
2524 | | -"\u01D3" => "U"
|
2525 | | -
|
2526 | | -# Ǖ [LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON]
|
2527 | | -"\u01D5" => "U"
|
2528 | | -
|
2529 | | -# Ǘ [LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE]
|
2530 | | -"\u01D7" => "U"
|
2531 | | -
|
2532 | | -# Ǚ [LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON]
|
2533 | | -"\u01D9" => "U"
|
2534 | | -
|
2535 | | -# Ǜ [LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE]
|
2536 | | -"\u01DB" => "U"
|
2537 | | -
|
2538 | | -# Ȕ [LATIN CAPITAL LETTER U WITH DOUBLE GRAVE]
|
2539 | | -"\u0214" => "U"
|
2540 | | -
|
2541 | | -# Ȗ [LATIN CAPITAL LETTER U WITH INVERTED BREVE]
|
2542 | | -"\u0216" => "U"
|
2543 | | -
|
2544 | | -# Ʉ [LATIN CAPITAL LETTER U BAR]
|
2545 | | -"\u0244" => "U"
|
2546 | | -
|
2547 | | -# ᴜ [LATIN LETTER SMALL CAPITAL U]
|
2548 | | -"\u1D1C" => "U"
|
2549 | | -
|
2550 | | -# ᵾ [LATIN SMALL CAPITAL LETTER U WITH STROKE]
|
2551 | | -"\u1D7E" => "U"
|
2552 | | -
|
2553 | | -# Ṳ [LATIN CAPITAL LETTER U WITH DIAERESIS BELOW]
|
2554 | | -"\u1E72" => "U"
|
2555 | | -
|
2556 | | -# Ṵ [LATIN CAPITAL LETTER U WITH TILDE BELOW]
|
2557 | | -"\u1E74" => "U"
|
2558 | | -
|
2559 | | -# Ṷ [LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW]
|
2560 | | -"\u1E76" => "U"
|
2561 | | -
|
2562 | | -# Ṹ [LATIN CAPITAL LETTER U WITH TILDE AND ACUTE]
|
2563 | | -"\u1E78" => "U"
|
2564 | | -
|
2565 | | -# Ṻ [LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS]
|
2566 | | -"\u1E7A" => "U"
|
2567 | | -
|
2568 | | -# Ụ [LATIN CAPITAL LETTER U WITH DOT BELOW]
|
2569 | | -"\u1EE4" => "U"
|
2570 | | -
|
2571 | | -# Ủ [LATIN CAPITAL LETTER U WITH HOOK ABOVE]
|
2572 | | -"\u1EE6" => "U"
|
2573 | | -
|
2574 | | -# Ứ [LATIN CAPITAL LETTER U WITH HORN AND ACUTE]
|
2575 | | -"\u1EE8" => "U"
|
2576 | | -
|
2577 | | -# Ừ [LATIN CAPITAL LETTER U WITH HORN AND GRAVE]
|
2578 | | -"\u1EEA" => "U"
|
2579 | | -
|
2580 | | -# Ử [LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE]
|
2581 | | -"\u1EEC" => "U"
|
2582 | | -
|
2583 | | -# Ữ [LATIN CAPITAL LETTER U WITH HORN AND TILDE]
|
2584 | | -"\u1EEE" => "U"
|
2585 | | -
|
2586 | | -# Ự [LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW]
|
2587 | | -"\u1EF0" => "U"
|
2588 | | -
|
2589 | | -# Ⓤ [CIRCLED LATIN CAPITAL LETTER U]
|
2590 | | -"\u24CA" => "U"
|
2591 | | -
|
2592 | | -# U [FULLWIDTH LATIN CAPITAL LETTER U]
|
2593 | | -"\uFF35" => "U"
|
2594 | | -
|
2595 | | -# ù [LATIN SMALL LETTER U WITH GRAVE]
|
2596 | | -"\u00F9" => "u"
|
2597 | | -
|
2598 | | -# ú [LATIN SMALL LETTER U WITH ACUTE]
|
2599 | | -"\u00FA" => "u"
|
2600 | | -
|
2601 | | -# û [LATIN SMALL LETTER U WITH CIRCUMFLEX]
|
2602 | | -"\u00FB" => "u"
|
2603 | | -
|
2604 | | -# ü [LATIN SMALL LETTER U WITH DIAERESIS]
|
2605 | | -"\u00FC" => "u"
|
2606 | | -
|
2607 | | -# ũ [LATIN SMALL LETTER U WITH TILDE]
|
2608 | | -"\u0169" => "u"
|
2609 | | -
|
2610 | | -# ū [LATIN SMALL LETTER U WITH MACRON]
|
2611 | | -"\u016B" => "u"
|
2612 | | -
|
2613 | | -# ŭ [LATIN SMALL LETTER U WITH BREVE]
|
2614 | | -"\u016D" => "u"
|
2615 | | -
|
2616 | | -# ů [LATIN SMALL LETTER U WITH RING ABOVE]
|
2617 | | -"\u016F" => "u"
|
2618 | | -
|
2619 | | -# ű [LATIN SMALL LETTER U WITH DOUBLE ACUTE]
|
2620 | | -"\u0171" => "u"
|
2621 | | -
|
2622 | | -# ų [LATIN SMALL LETTER U WITH OGONEK]
|
2623 | | -"\u0173" => "u"
|
2624 | | -
|
2625 | | -# ư [LATIN SMALL LETTER U WITH HORN]
|
2626 | | -"\u01B0" => "u"
|
2627 | | -
|
2628 | | -# ǔ [LATIN SMALL LETTER U WITH CARON]
|
2629 | | -"\u01D4" => "u"
|
2630 | | -
|
2631 | | -# ǖ [LATIN SMALL LETTER U WITH DIAERESIS AND MACRON]
|
2632 | | -"\u01D6" => "u"
|
2633 | | -
|
2634 | | -# ǘ [LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE]
|
2635 | | -"\u01D8" => "u"
|
2636 | | -
|
2637 | | -# ǚ [LATIN SMALL LETTER U WITH DIAERESIS AND CARON]
|
2638 | | -"\u01DA" => "u"
|
2639 | | -
|
2640 | | -# ǜ [LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE]
|
2641 | | -"\u01DC" => "u"
|
2642 | | -
|
2643 | | -# ȕ [LATIN SMALL LETTER U WITH DOUBLE GRAVE]
|
2644 | | -"\u0215" => "u"
|
2645 | | -
|
2646 | | -# ȗ [LATIN SMALL LETTER U WITH INVERTED BREVE]
|
2647 | | -"\u0217" => "u"
|
2648 | | -
|
2649 | | -# ʉ [LATIN SMALL LETTER U BAR]
|
2650 | | -"\u0289" => "u"
|
2651 | | -
|
2652 | | -# ᵤ [LATIN SUBSCRIPT SMALL LETTER U]
|
2653 | | -"\u1D64" => "u"
|
2654 | | -
|
2655 | | -# ᶙ [LATIN SMALL LETTER U WITH RETROFLEX HOOK]
|
2656 | | -"\u1D99" => "u"
|
2657 | | -
|
2658 | | -# ṳ [LATIN SMALL LETTER U WITH DIAERESIS BELOW]
|
2659 | | -"\u1E73" => "u"
|
2660 | | -
|
2661 | | -# ṵ [LATIN SMALL LETTER U WITH TILDE BELOW]
|
2662 | | -"\u1E75" => "u"
|
2663 | | -
|
2664 | | -# ṷ [LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW]
|
2665 | | -"\u1E77" => "u"
|
2666 | | -
|
2667 | | -# ṹ [LATIN SMALL LETTER U WITH TILDE AND ACUTE]
|
2668 | | -"\u1E79" => "u"
|
2669 | | -
|
2670 | | -# ṻ [LATIN SMALL LETTER U WITH MACRON AND DIAERESIS]
|
2671 | | -"\u1E7B" => "u"
|
2672 | | -
|
2673 | | -# ụ [LATIN SMALL LETTER U WITH DOT BELOW]
|
2674 | | -"\u1EE5" => "u"
|
2675 | | -
|
2676 | | -# ủ [LATIN SMALL LETTER U WITH HOOK ABOVE]
|
2677 | | -"\u1EE7" => "u"
|
2678 | | -
|
2679 | | -# ứ [LATIN SMALL LETTER U WITH HORN AND ACUTE]
|
2680 | | -"\u1EE9" => "u"
|
2681 | | -
|
2682 | | -# ừ [LATIN SMALL LETTER U WITH HORN AND GRAVE]
|
2683 | | -"\u1EEB" => "u"
|
2684 | | -
|
2685 | | -# ử [LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE]
|
2686 | | -"\u1EED" => "u"
|
2687 | | -
|
2688 | | -# ữ [LATIN SMALL LETTER U WITH HORN AND TILDE]
|
2689 | | -"\u1EEF" => "u"
|
2690 | | -
|
2691 | | -# ự [LATIN SMALL LETTER U WITH HORN AND DOT BELOW]
|
2692 | | -"\u1EF1" => "u"
|
2693 | | -
|
2694 | | -# ⓤ [CIRCLED LATIN SMALL LETTER U]
|
2695 | | -"\u24E4" => "u"
|
2696 | | -
|
2697 | | -# u [FULLWIDTH LATIN SMALL LETTER U]
|
2698 | | -"\uFF55" => "u"
|
2699 | | -
|
2700 | | -# ⒰ [PARENTHESIZED LATIN SMALL LETTER U]
|
2701 | | -"\u24B0" => "(u)"
|
2702 | | -
|
2703 | | -# ᵫ [LATIN SMALL LETTER UE]
|
2704 | | -"\u1D6B" => "ue"
|
2705 | | -
|
2706 | | -# Ʋ [LATIN CAPITAL LETTER V WITH HOOK]
|
2707 | | -"\u01B2" => "V"
|
2708 | | -
|
2709 | | -# Ʌ [LATIN CAPITAL LETTER TURNED V]
|
2710 | | -"\u0245" => "V"
|
2711 | | -
|
2712 | | -# ᴠ [LATIN LETTER SMALL CAPITAL V]
|
2713 | | -"\u1D20" => "V"
|
2714 | | -
|
2715 | | -# Ṽ [LATIN CAPITAL LETTER V WITH TILDE]
|
2716 | | -"\u1E7C" => "V"
|
2717 | | -
|
2718 | | -# Ṿ [LATIN CAPITAL LETTER V WITH DOT BELOW]
|
2719 | | -"\u1E7E" => "V"
|
2720 | | -
|
2721 | | -# Ỽ [LATIN CAPITAL LETTER MIDDLE-WELSH V]
|
2722 | | -"\u1EFC" => "V"
|
2723 | | -
|
2724 | | -# Ⓥ [CIRCLED LATIN CAPITAL LETTER V]
|
2725 | | -"\u24CB" => "V"
|
2726 | | -
|
2727 | | -# Ꝟ [LATIN CAPITAL LETTER V WITH DIAGONAL STROKE]
|
2728 | | -"\uA75E" => "V"
|
2729 | | -
|
2730 | | -# Ꝩ [LATIN CAPITAL LETTER VEND]
|
2731 | | -"\uA768" => "V"
|
2732 | | -
|
2733 | | -# V [FULLWIDTH LATIN CAPITAL LETTER V]
|
2734 | | -"\uFF36" => "V"
|
2735 | | -
|
2736 | | -# ʋ [LATIN SMALL LETTER V WITH HOOK]
|
2737 | | -"\u028B" => "v"
|
2738 | | -
|
2739 | | -# ʌ [LATIN SMALL LETTER TURNED V]
|
2740 | | -"\u028C" => "v"
|
2741 | | -
|
2742 | | -# ᵥ [LATIN SUBSCRIPT SMALL LETTER V]
|
2743 | | -"\u1D65" => "v"
|
2744 | | -
|
2745 | | -# ᶌ [LATIN SMALL LETTER V WITH PALATAL HOOK]
|
2746 | | -"\u1D8C" => "v"
|
2747 | | -
|
2748 | | -# ṽ [LATIN SMALL LETTER V WITH TILDE]
|
2749 | | -"\u1E7D" => "v"
|
2750 | | -
|
2751 | | -# ṿ [LATIN SMALL LETTER V WITH DOT BELOW]
|
2752 | | -"\u1E7F" => "v"
|
2753 | | -
|
2754 | | -# ⓥ [CIRCLED LATIN SMALL LETTER V]
|
2755 | | -"\u24E5" => "v"
|
2756 | | -
|
2757 | | -# ⱱ [LATIN SMALL LETTER V WITH RIGHT HOOK]
|
2758 | | -"\u2C71" => "v"
|
2759 | | -
|
2760 | | -# ⱴ [LATIN SMALL LETTER V WITH CURL]
|
2761 | | -"\u2C74" => "v"
|
2762 | | -
|
2763 | | -# ꝟ [LATIN SMALL LETTER V WITH DIAGONAL STROKE]
|
2764 | | -"\uA75F" => "v"
|
2765 | | -
|
2766 | | -# v [FULLWIDTH LATIN SMALL LETTER V]
|
2767 | | -"\uFF56" => "v"
|
2768 | | -
|
2769 | | -# Ꝡ [LATIN CAPITAL LETTER VY]
|
2770 | | -"\uA760" => "VY"
|
2771 | | -
|
2772 | | -# ⒱ [PARENTHESIZED LATIN SMALL LETTER V]
|
2773 | | -"\u24B1" => "(v)"
|
2774 | | -
|
2775 | | -# ꝡ [LATIN SMALL LETTER VY]
|
2776 | | -"\uA761" => "vy"
|
2777 | | -
|
2778 | | -# Ŵ [LATIN CAPITAL LETTER W WITH CIRCUMFLEX]
|
2779 | | -"\u0174" => "W"
|
2780 | | -
|
2781 | | -# Ƿ http://en.wikipedia.org/wiki/Wynn [LATIN CAPITAL LETTER WYNN]
|
2782 | | -"\u01F7" => "W"
|
2783 | | -
|
2784 | | -# ᴡ [LATIN LETTER SMALL CAPITAL W]
|
2785 | | -"\u1D21" => "W"
|
2786 | | -
|
2787 | | -# Ẁ [LATIN CAPITAL LETTER W WITH GRAVE]
|
2788 | | -"\u1E80" => "W"
|
2789 | | -
|
2790 | | -# Ẃ [LATIN CAPITAL LETTER W WITH ACUTE]
|
2791 | | -"\u1E82" => "W"
|
2792 | | -
|
2793 | | -# Ẅ [LATIN CAPITAL LETTER W WITH DIAERESIS]
|
2794 | | -"\u1E84" => "W"
|
2795 | | -
|
2796 | | -# Ẇ [LATIN CAPITAL LETTER W WITH DOT ABOVE]
|
2797 | | -"\u1E86" => "W"
|
2798 | | -
|
2799 | | -# Ẉ [LATIN CAPITAL LETTER W WITH DOT BELOW]
|
2800 | | -"\u1E88" => "W"
|
2801 | | -
|
2802 | | -# Ⓦ [CIRCLED LATIN CAPITAL LETTER W]
|
2803 | | -"\u24CC" => "W"
|
2804 | | -
|
2805 | | -# Ⱳ [LATIN CAPITAL LETTER W WITH HOOK]
|
2806 | | -"\u2C72" => "W"
|
2807 | | -
|
2808 | | -# W [FULLWIDTH LATIN CAPITAL LETTER W]
|
2809 | | -"\uFF37" => "W"
|
2810 | | -
|
2811 | | -# ŵ [LATIN SMALL LETTER W WITH CIRCUMFLEX]
|
2812 | | -"\u0175" => "w"
|
2813 | | -
|
2814 | | -# ƿ http://en.wikipedia.org/wiki/Wynn [LATIN LETTER WYNN]
|
2815 | | -"\u01BF" => "w"
|
2816 | | -
|
2817 | | -# ʍ [LATIN SMALL LETTER TURNED W]
|
2818 | | -"\u028D" => "w"
|
2819 | | -
|
2820 | | -# ẁ [LATIN SMALL LETTER W WITH GRAVE]
|
2821 | | -"\u1E81" => "w"
|
2822 | | -
|
2823 | | -# ẃ [LATIN SMALL LETTER W WITH ACUTE]
|
2824 | | -"\u1E83" => "w"
|
2825 | | -
|
2826 | | -# ẅ [LATIN SMALL LETTER W WITH DIAERESIS]
|
2827 | | -"\u1E85" => "w"
|
2828 | | -
|
2829 | | -# ẇ [LATIN SMALL LETTER W WITH DOT ABOVE]
|
2830 | | -"\u1E87" => "w"
|
2831 | | -
|
2832 | | -# ẉ [LATIN SMALL LETTER W WITH DOT BELOW]
|
2833 | | -"\u1E89" => "w"
|
2834 | | -
|
2835 | | -# ẘ [LATIN SMALL LETTER W WITH RING ABOVE]
|
2836 | | -"\u1E98" => "w"
|
2837 | | -
|
2838 | | -# ⓦ [CIRCLED LATIN SMALL LETTER W]
|
2839 | | -"\u24E6" => "w"
|
2840 | | -
|
2841 | | -# ⱳ [LATIN SMALL LETTER W WITH HOOK]
|
2842 | | -"\u2C73" => "w"
|
2843 | | -
|
2844 | | -# w [FULLWIDTH LATIN SMALL LETTER W]
|
2845 | | -"\uFF57" => "w"
|
2846 | | -
|
2847 | | -# ⒲ [PARENTHESIZED LATIN SMALL LETTER W]
|
2848 | | -"\u24B2" => "(w)"
|
2849 | | -
|
2850 | | -# Ẋ [LATIN CAPITAL LETTER X WITH DOT ABOVE]
|
2851 | | -"\u1E8A" => "X"
|
2852 | | -
|
2853 | | -# Ẍ [LATIN CAPITAL LETTER X WITH DIAERESIS]
|
2854 | | -"\u1E8C" => "X"
|
2855 | | -
|
2856 | | -# Ⓧ [CIRCLED LATIN CAPITAL LETTER X]
|
2857 | | -"\u24CD" => "X"
|
2858 | | -
|
2859 | | -# X [FULLWIDTH LATIN CAPITAL LETTER X]
|
2860 | | -"\uFF38" => "X"
|
2861 | | -
|
2862 | | -# ᶍ [LATIN SMALL LETTER X WITH PALATAL HOOK]
|
2863 | | -"\u1D8D" => "x"
|
2864 | | -
|
2865 | | -# ẋ [LATIN SMALL LETTER X WITH DOT ABOVE]
|
2866 | | -"\u1E8B" => "x"
|
2867 | | -
|
2868 | | -# ẍ [LATIN SMALL LETTER X WITH DIAERESIS]
|
2869 | | -"\u1E8D" => "x"
|
2870 | | -
|
2871 | | -# ₓ [LATIN SUBSCRIPT SMALL LETTER X]
|
2872 | | -"\u2093" => "x"
|
2873 | | -
|
2874 | | -# ⓧ [CIRCLED LATIN SMALL LETTER X]
|
2875 | | -"\u24E7" => "x"
|
2876 | | -
|
2877 | | -# x [FULLWIDTH LATIN SMALL LETTER X]
|
2878 | | -"\uFF58" => "x"
|
2879 | | -
|
2880 | | -# ⒳ [PARENTHESIZED LATIN SMALL LETTER X]
|
2881 | | -"\u24B3" => "(x)"
|
2882 | | -
|
2883 | | -# Ý [LATIN CAPITAL LETTER Y WITH ACUTE]
|
2884 | | -"\u00DD" => "Y"
|
2885 | | -
|
2886 | | -# Ŷ [LATIN CAPITAL LETTER Y WITH CIRCUMFLEX]
|
2887 | | -"\u0176" => "Y"
|
2888 | | -
|
2889 | | -# Ÿ [LATIN CAPITAL LETTER Y WITH DIAERESIS]
|
2890 | | -"\u0178" => "Y"
|
2891 | | -
|
2892 | | -# Ƴ [LATIN CAPITAL LETTER Y WITH HOOK]
|
2893 | | -"\u01B3" => "Y"
|
2894 | | -
|
2895 | | -# Ȳ [LATIN CAPITAL LETTER Y WITH MACRON]
|
2896 | | -"\u0232" => "Y"
|
2897 | | -
|
2898 | | -# Ɏ [LATIN CAPITAL LETTER Y WITH STROKE]
|
2899 | | -"\u024E" => "Y"
|
2900 | | -
|
2901 | | -# ʏ [LATIN LETTER SMALL CAPITAL Y]
|
2902 | | -"\u028F" => "Y"
|
2903 | | -
|
2904 | | -# Ẏ [LATIN CAPITAL LETTER Y WITH DOT ABOVE]
|
2905 | | -"\u1E8E" => "Y"
|
2906 | | -
|
2907 | | -# Ỳ [LATIN CAPITAL LETTER Y WITH GRAVE]
|
2908 | | -"\u1EF2" => "Y"
|
2909 | | -
|
2910 | | -# Ỵ [LATIN CAPITAL LETTER Y WITH DOT BELOW]
|
2911 | | -"\u1EF4" => "Y"
|
2912 | | -
|
2913 | | -# Ỷ [LATIN CAPITAL LETTER Y WITH HOOK ABOVE]
|
2914 | | -"\u1EF6" => "Y"
|
2915 | | -
|
2916 | | -# Ỹ [LATIN CAPITAL LETTER Y WITH TILDE]
|
2917 | | -"\u1EF8" => "Y"
|
2918 | | -
|
2919 | | -# Ỿ [LATIN CAPITAL LETTER Y WITH LOOP]
|
2920 | | -"\u1EFE" => "Y"
|
2921 | | -
|
2922 | | -# Ⓨ [CIRCLED LATIN CAPITAL LETTER Y]
|
2923 | | -"\u24CE" => "Y"
|
2924 | | -
|
2925 | | -# Y [FULLWIDTH LATIN CAPITAL LETTER Y]
|
2926 | | -"\uFF39" => "Y"
|
2927 | | -
|
2928 | | -# ý [LATIN SMALL LETTER Y WITH ACUTE]
|
2929 | | -"\u00FD" => "y"
|
2930 | | -
|
2931 | | -# ÿ [LATIN SMALL LETTER Y WITH DIAERESIS]
|
2932 | | -"\u00FF" => "y"
|
2933 | | -
|
2934 | | -# ŷ [LATIN SMALL LETTER Y WITH CIRCUMFLEX]
|
2935 | | -"\u0177" => "y"
|
2936 | | -
|
2937 | | -# ƴ [LATIN SMALL LETTER Y WITH HOOK]
|
2938 | | -"\u01B4" => "y"
|
2939 | | -
|
2940 | | -# ȳ [LATIN SMALL LETTER Y WITH MACRON]
|
2941 | | -"\u0233" => "y"
|
2942 | | -
|
2943 | | -# ɏ [LATIN SMALL LETTER Y WITH STROKE]
|
2944 | | -"\u024F" => "y"
|
2945 | | -
|
2946 | | -# ʎ [LATIN SMALL LETTER TURNED Y]
|
2947 | | -"\u028E" => "y"
|
2948 | | -
|
2949 | | -# ẏ [LATIN SMALL LETTER Y WITH DOT ABOVE]
|
2950 | | -"\u1E8F" => "y"
|
2951 | | -
|
2952 | | -# ẙ [LATIN SMALL LETTER Y WITH RING ABOVE]
|
2953 | | -"\u1E99" => "y"
|
2954 | | -
|
2955 | | -# ỳ [LATIN SMALL LETTER Y WITH GRAVE]
|
2956 | | -"\u1EF3" => "y"
|
2957 | | -
|
2958 | | -# ỵ [LATIN SMALL LETTER Y WITH DOT BELOW]
|
2959 | | -"\u1EF5" => "y"
|
2960 | | -
|
2961 | | -# ỷ [LATIN SMALL LETTER Y WITH HOOK ABOVE]
|
2962 | | -"\u1EF7" => "y"
|
2963 | | -
|
2964 | | -# ỹ [LATIN SMALL LETTER Y WITH TILDE]
|
2965 | | -"\u1EF9" => "y"
|
2966 | | -
|
2967 | | -# ỿ [LATIN SMALL LETTER Y WITH LOOP]
|
2968 | | -"\u1EFF" => "y"
|
2969 | | -
|
2970 | | -# ⓨ [CIRCLED LATIN SMALL LETTER Y]
|
2971 | | -"\u24E8" => "y"
|
2972 | | -
|
2973 | | -# y [FULLWIDTH LATIN SMALL LETTER Y]
|
2974 | | -"\uFF59" => "y"
|
2975 | | -
|
2976 | | -# ⒴ [PARENTHESIZED LATIN SMALL LETTER Y]
|
2977 | | -"\u24B4" => "(y)"
|
2978 | | -
|
2979 | | -# Ź [LATIN CAPITAL LETTER Z WITH ACUTE]
|
2980 | | -"\u0179" => "Z"
|
2981 | | -
|
2982 | | -# Ż [LATIN CAPITAL LETTER Z WITH DOT ABOVE]
|
2983 | | -"\u017B" => "Z"
|
2984 | | -
|
2985 | | -# Ž [LATIN CAPITAL LETTER Z WITH CARON]
|
2986 | | -"\u017D" => "Z"
|
2987 | | -
|
2988 | | -# Ƶ [LATIN CAPITAL LETTER Z WITH STROKE]
|
2989 | | -"\u01B5" => "Z"
|
2990 | | -
|
2991 | | -# Ȝ http://en.wikipedia.org/wiki/Yogh [LATIN CAPITAL LETTER YOGH]
|
2992 | | -"\u021C" => "Z"
|
2993 | | -
|
2994 | | -# Ȥ [LATIN CAPITAL LETTER Z WITH HOOK]
|
2995 | | -"\u0224" => "Z"
|
2996 | | -
|
2997 | | -# ᴢ [LATIN LETTER SMALL CAPITAL Z]
|
2998 | | -"\u1D22" => "Z"
|
2999 | | -
|
3000 | | -# Ẑ [LATIN CAPITAL LETTER Z WITH CIRCUMFLEX]
|
3001 | | -"\u1E90" => "Z"
|
3002 | | -
|
3003 | | -# Ẓ [LATIN CAPITAL LETTER Z WITH DOT BELOW]
|
3004 | | -"\u1E92" => "Z"
|
3005 | | -
|
3006 | | -# Ẕ [LATIN CAPITAL LETTER Z WITH LINE BELOW]
|
3007 | | -"\u1E94" => "Z"
|
3008 | | -
|
3009 | | -# Ⓩ [CIRCLED LATIN CAPITAL LETTER Z]
|
3010 | | -"\u24CF" => "Z"
|
3011 | | -
|
3012 | | -# Ⱬ [LATIN CAPITAL LETTER Z WITH DESCENDER]
|
3013 | | -"\u2C6B" => "Z"
|
3014 | | -
|
3015 | | -# Ꝣ [LATIN CAPITAL LETTER VISIGOTHIC Z]
|
3016 | | -"\uA762" => "Z"
|
3017 | | -
|
3018 | | -# Z [FULLWIDTH LATIN CAPITAL LETTER Z]
|
3019 | | -"\uFF3A" => "Z"
|
3020 | | -
|
3021 | | -# ź [LATIN SMALL LETTER Z WITH ACUTE]
|
3022 | | -"\u017A" => "z"
|
3023 | | -
|
3024 | | -# ż [LATIN SMALL LETTER Z WITH DOT ABOVE]
|
3025 | | -"\u017C" => "z"
|
3026 | | -
|
3027 | | -# ž [LATIN SMALL LETTER Z WITH CARON]
|
3028 | | -"\u017E" => "z"
|
3029 | | -
|
3030 | | -# ƶ [LATIN SMALL LETTER Z WITH STROKE]
|
3031 | | -"\u01B6" => "z"
|
3032 | | -
|
3033 | | -# ȝ http://en.wikipedia.org/wiki/Yogh [LATIN SMALL LETTER YOGH]
|
3034 | | -"\u021D" => "z"
|
3035 | | -
|
3036 | | -# ȥ [LATIN SMALL LETTER Z WITH HOOK]
|
3037 | | -"\u0225" => "z"
|
3038 | | -
|
3039 | | -# ɀ [LATIN SMALL LETTER Z WITH SWASH TAIL]
|
3040 | | -"\u0240" => "z"
|
3041 | | -
|
3042 | | -# ʐ [LATIN SMALL LETTER Z WITH RETROFLEX HOOK]
|
3043 | | -"\u0290" => "z"
|
3044 | | -
|
3045 | | -# ʑ [LATIN SMALL LETTER Z WITH CURL]
|
3046 | | -"\u0291" => "z"
|
3047 | | -
|
3048 | | -# ᵶ [LATIN SMALL LETTER Z WITH MIDDLE TILDE]
|
3049 | | -"\u1D76" => "z"
|
3050 | | -
|
3051 | | -# ᶎ [LATIN SMALL LETTER Z WITH PALATAL HOOK]
|
3052 | | -"\u1D8E" => "z"
|
3053 | | -
|
3054 | | -# ẑ [LATIN SMALL LETTER Z WITH CIRCUMFLEX]
|
3055 | | -"\u1E91" => "z"
|
3056 | | -
|
3057 | | -# ẓ [LATIN SMALL LETTER Z WITH DOT BELOW]
|
3058 | | -"\u1E93" => "z"
|
3059 | | -
|
3060 | | -# ẕ [LATIN SMALL LETTER Z WITH LINE BELOW]
|
3061 | | -"\u1E95" => "z"
|
3062 | | -
|
3063 | | -# ⓩ [CIRCLED LATIN SMALL LETTER Z]
|
3064 | | -"\u24E9" => "z"
|
3065 | | -
|
3066 | | -# ⱬ [LATIN SMALL LETTER Z WITH DESCENDER]
|
3067 | | -"\u2C6C" => "z"
|
3068 | | -
|
3069 | | -# ꝣ [LATIN SMALL LETTER VISIGOTHIC Z]
|
3070 | | -"\uA763" => "z"
|
3071 | | -
|
3072 | | -# z [FULLWIDTH LATIN SMALL LETTER Z]
|
3073 | | -"\uFF5A" => "z"
|
3074 | | -
|
3075 | | -# ⒵ [PARENTHESIZED LATIN SMALL LETTER Z]
|
3076 | | -"\u24B5" => "(z)"
|
3077 | | -
|
3078 | | -# ⁰ [SUPERSCRIPT ZERO]
|
3079 | | -"\u2070" => "0"
|
3080 | | -
|
3081 | | -# ₀ [SUBSCRIPT ZERO]
|
3082 | | -"\u2080" => "0"
|
3083 | | -
|
3084 | | -# ⓪ [CIRCLED DIGIT ZERO]
|
3085 | | -"\u24EA" => "0"
|
3086 | | -
|
3087 | | -# ⓿ [NEGATIVE CIRCLED DIGIT ZERO]
|
3088 | | -"\u24FF" => "0"
|
3089 | | -
|
3090 | | -# 0 [FULLWIDTH DIGIT ZERO]
|
3091 | | -"\uFF10" => "0"
|
3092 | | -
|
3093 | | -# ¹ [SUPERSCRIPT ONE]
|
3094 | | -"\u00B9" => "1"
|
3095 | | -
|
3096 | | -# ₁ [SUBSCRIPT ONE]
|
3097 | | -"\u2081" => "1"
|
3098 | | -
|
3099 | | -# ① [CIRCLED DIGIT ONE]
|
3100 | | -"\u2460" => "1"
|
3101 | | -
|
3102 | | -# ⓵ [DOUBLE CIRCLED DIGIT ONE]
|
3103 | | -"\u24F5" => "1"
|
3104 | | -
|
3105 | | -# ❶ [DINGBAT NEGATIVE CIRCLED DIGIT ONE]
|
3106 | | -"\u2776" => "1"
|
3107 | | -
|
3108 | | -# ➀ [DINGBAT CIRCLED SANS-SERIF DIGIT ONE]
|
3109 | | -"\u2780" => "1"
|
3110 | | -
|
3111 | | -# ➊ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE]
|
3112 | | -"\u278A" => "1"
|
3113 | | -
|
3114 | | -# 1 [FULLWIDTH DIGIT ONE]
|
3115 | | -"\uFF11" => "1"
|
3116 | | -
|
3117 | | -# ⒈ [DIGIT ONE FULL STOP]
|
3118 | | -"\u2488" => "1."
|
3119 | | -
|
3120 | | -# ⑴ [PARENTHESIZED DIGIT ONE]
|
3121 | | -"\u2474" => "(1)"
|
3122 | | -
|
3123 | | -# ² [SUPERSCRIPT TWO]
|
3124 | | -"\u00B2" => "2"
|
3125 | | -
|
3126 | | -# ₂ [SUBSCRIPT TWO]
|
3127 | | -"\u2082" => "2"
|
3128 | | -
|
3129 | | -# ② [CIRCLED DIGIT TWO]
|
3130 | | -"\u2461" => "2"
|
3131 | | -
|
3132 | | -# ⓶ [DOUBLE CIRCLED DIGIT TWO]
|
3133 | | -"\u24F6" => "2"
|
3134 | | -
|
3135 | | -# ❷ [DINGBAT NEGATIVE CIRCLED DIGIT TWO]
|
3136 | | -"\u2777" => "2"
|
3137 | | -
|
3138 | | -# ➁ [DINGBAT CIRCLED SANS-SERIF DIGIT TWO]
|
3139 | | -"\u2781" => "2"
|
3140 | | -
|
3141 | | -# ➋ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO]
|
3142 | | -"\u278B" => "2"
|
3143 | | -
|
3144 | | -# 2 [FULLWIDTH DIGIT TWO]
|
3145 | | -"\uFF12" => "2"
|
3146 | | -
|
3147 | | -# ⒉ [DIGIT TWO FULL STOP]
|
3148 | | -"\u2489" => "2."
|
3149 | | -
|
3150 | | -# ⑵ [PARENTHESIZED DIGIT TWO]
|
3151 | | -"\u2475" => "(2)"
|
3152 | | -
|
3153 | | -# ³ [SUPERSCRIPT THREE]
|
3154 | | -"\u00B3" => "3"
|
3155 | | -
|
3156 | | -# ₃ [SUBSCRIPT THREE]
|
3157 | | -"\u2083" => "3"
|
3158 | | -
|
3159 | | -# ③ [CIRCLED DIGIT THREE]
|
3160 | | -"\u2462" => "3"
|
3161 | | -
|
3162 | | -# ⓷ [DOUBLE CIRCLED DIGIT THREE]
|
3163 | | -"\u24F7" => "3"
|
3164 | | -
|
3165 | | -# ❸ [DINGBAT NEGATIVE CIRCLED DIGIT THREE]
|
3166 | | -"\u2778" => "3"
|
3167 | | -
|
3168 | | -# ➂ [DINGBAT CIRCLED SANS-SERIF DIGIT THREE]
|
3169 | | -"\u2782" => "3"
|
3170 | | -
|
3171 | | -# ➌ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE]
|
3172 | | -"\u278C" => "3"
|
3173 | | -
|
3174 | | -# 3 [FULLWIDTH DIGIT THREE]
|
3175 | | -"\uFF13" => "3"
|
3176 | | -
|
3177 | | -# ⒊ [DIGIT THREE FULL STOP]
|
3178 | | -"\u248A" => "3."
|
3179 | | -
|
3180 | | -# ⑶ [PARENTHESIZED DIGIT THREE]
|
3181 | | -"\u2476" => "(3)"
|
3182 | | -
|
3183 | | -# ⁴ [SUPERSCRIPT FOUR]
|
3184 | | -"\u2074" => "4"
|
3185 | | -
|
3186 | | -# ₄ [SUBSCRIPT FOUR]
|
3187 | | -"\u2084" => "4"
|
3188 | | -
|
3189 | | -# ④ [CIRCLED DIGIT FOUR]
|
3190 | | -"\u2463" => "4"
|
3191 | | -
|
3192 | | -# ⓸ [DOUBLE CIRCLED DIGIT FOUR]
|
3193 | | -"\u24F8" => "4"
|
3194 | | -
|
3195 | | -# ❹ [DINGBAT NEGATIVE CIRCLED DIGIT FOUR]
|
3196 | | -"\u2779" => "4"
|
3197 | | -
|
3198 | | -# ➃ [DINGBAT CIRCLED SANS-SERIF DIGIT FOUR]
|
3199 | | -"\u2783" => "4"
|
3200 | | -
|
3201 | | -# ➍ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR]
|
3202 | | -"\u278D" => "4"
|
3203 | | -
|
3204 | | -# 4 [FULLWIDTH DIGIT FOUR]
|
3205 | | -"\uFF14" => "4"
|
3206 | | -
|
3207 | | -# ⒋ [DIGIT FOUR FULL STOP]
|
3208 | | -"\u248B" => "4."
|
3209 | | -
|
3210 | | -# ⑷ [PARENTHESIZED DIGIT FOUR]
|
3211 | | -"\u2477" => "(4)"
|
3212 | | -
|
3213 | | -# ⁵ [SUPERSCRIPT FIVE]
|
3214 | | -"\u2075" => "5"
|
3215 | | -
|
3216 | | -# ₅ [SUBSCRIPT FIVE]
|
3217 | | -"\u2085" => "5"
|
3218 | | -
|
3219 | | -# ⑤ [CIRCLED DIGIT FIVE]
|
3220 | | -"\u2464" => "5"
|
3221 | | -
|
3222 | | -# ⓹ [DOUBLE CIRCLED DIGIT FIVE]
|
3223 | | -"\u24F9" => "5"
|
3224 | | -
|
3225 | | -# ❺ [DINGBAT NEGATIVE CIRCLED DIGIT FIVE]
|
3226 | | -"\u277A" => "5"
|
3227 | | -
|
3228 | | -# ➄ [DINGBAT CIRCLED SANS-SERIF DIGIT FIVE]
|
3229 | | -"\u2784" => "5"
|
3230 | | -
|
3231 | | -# ➎ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE]
|
3232 | | -"\u278E" => "5"
|
3233 | | -
|
3234 | | -# 5 [FULLWIDTH DIGIT FIVE]
|
3235 | | -"\uFF15" => "5"
|
3236 | | -
|
3237 | | -# ⒌ [DIGIT FIVE FULL STOP]
|
3238 | | -"\u248C" => "5."
|
3239 | | -
|
3240 | | -# ⑸ [PARENTHESIZED DIGIT FIVE]
|
3241 | | -"\u2478" => "(5)"
|
3242 | | -
|
3243 | | -# ⁶ [SUPERSCRIPT SIX]
|
3244 | | -"\u2076" => "6"
|
3245 | | -
|
3246 | | -# ₆ [SUBSCRIPT SIX]
|
3247 | | -"\u2086" => "6"
|
3248 | | -
|
3249 | | -# ⑥ [CIRCLED DIGIT SIX]
|
3250 | | -"\u2465" => "6"
|
3251 | | -
|
3252 | | -# ⓺ [DOUBLE CIRCLED DIGIT SIX]
|
3253 | | -"\u24FA" => "6"
|
3254 | | -
|
3255 | | -# ❻ [DINGBAT NEGATIVE CIRCLED DIGIT SIX]
|
3256 | | -"\u277B" => "6"
|
3257 | | -
|
3258 | | -# ➅ [DINGBAT CIRCLED SANS-SERIF DIGIT SIX]
|
3259 | | -"\u2785" => "6"
|
3260 | | -
|
3261 | | -# ➏ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX]
|
3262 | | -"\u278F" => "6"
|
3263 | | -
|
3264 | | -# 6 [FULLWIDTH DIGIT SIX]
|
3265 | | -"\uFF16" => "6"
|
3266 | | -
|
3267 | | -# ⒍ [DIGIT SIX FULL STOP]
|
3268 | | -"\u248D" => "6."
|
3269 | | -
|
3270 | | -# ⑹ [PARENTHESIZED DIGIT SIX]
|
3271 | | -"\u2479" => "(6)"
|
3272 | | -
|
3273 | | -# ⁷ [SUPERSCRIPT SEVEN]
|
3274 | | -"\u2077" => "7"
|
3275 | | -
|
3276 | | -# ₇ [SUBSCRIPT SEVEN]
|
3277 | | -"\u2087" => "7"
|
3278 | | -
|
3279 | | -# ⑦ [CIRCLED DIGIT SEVEN]
|
3280 | | -"\u2466" => "7"
|
3281 | | -
|
3282 | | -# ⓻ [DOUBLE CIRCLED DIGIT SEVEN]
|
3283 | | -"\u24FB" => "7"
|
3284 | | -
|
3285 | | -# ❼ [DINGBAT NEGATIVE CIRCLED DIGIT SEVEN]
|
3286 | | -"\u277C" => "7"
|
3287 | | -
|
3288 | | -# ➆ [DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN]
|
3289 | | -"\u2786" => "7"
|
3290 | | -
|
3291 | | -# ➐ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN]
|
3292 | | -"\u2790" => "7"
|
3293 | | -
|
3294 | | -# 7 [FULLWIDTH DIGIT SEVEN]
|
3295 | | -"\uFF17" => "7"
|
3296 | | -
|
3297 | | -# ⒎ [DIGIT SEVEN FULL STOP]
|
3298 | | -"\u248E" => "7."
|
3299 | | -
|
3300 | | -# ⑺ [PARENTHESIZED DIGIT SEVEN]
|
3301 | | -"\u247A" => "(7)"
|
3302 | | -
|
3303 | | -# ⁸ [SUPERSCRIPT EIGHT]
|
3304 | | -"\u2078" => "8"
|
3305 | | -
|
3306 | | -# ₈ [SUBSCRIPT EIGHT]
|
3307 | | -"\u2088" => "8"
|
3308 | | -
|
3309 | | -# ⑧ [CIRCLED DIGIT EIGHT]
|
3310 | | -"\u2467" => "8"
|
3311 | | -
|
3312 | | -# ⓼ [DOUBLE CIRCLED DIGIT EIGHT]
|
3313 | | -"\u24FC" => "8"
|
3314 | | -
|
3315 | | -# ❽ [DINGBAT NEGATIVE CIRCLED DIGIT EIGHT]
|
3316 | | -"\u277D" => "8"
|
3317 | | -
|
3318 | | -# ➇ [DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT]
|
3319 | | -"\u2787" => "8"
|
3320 | | -
|
3321 | | -# ➑ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT]
|
3322 | | -"\u2791" => "8"
|
3323 | | -
|
3324 | | -# 8 [FULLWIDTH DIGIT EIGHT]
|
3325 | | -"\uFF18" => "8"
|
3326 | | -
|
3327 | | -# ⒏ [DIGIT EIGHT FULL STOP]
|
3328 | | -"\u248F" => "8."
|
3329 | | -
|
3330 | | -# ⑻ [PARENTHESIZED DIGIT EIGHT]
|
3331 | | -"\u247B" => "(8)"
|
3332 | | -
|
3333 | | -# ⁹ [SUPERSCRIPT NINE]
|
3334 | | -"\u2079" => "9"
|
3335 | | -
|
3336 | | -# ₉ [SUBSCRIPT NINE]
|
3337 | | -"\u2089" => "9"
|
3338 | | -
|
3339 | | -# ⑨ [CIRCLED DIGIT NINE]
|
3340 | | -"\u2468" => "9"
|
3341 | | -
|
3342 | | -# ⓽ [DOUBLE CIRCLED DIGIT NINE]
|
3343 | | -"\u24FD" => "9"
|
3344 | | -
|
3345 | | -# ❾ [DINGBAT NEGATIVE CIRCLED DIGIT NINE]
|
3346 | | -"\u277E" => "9"
|
3347 | | -
|
3348 | | -# ➈ [DINGBAT CIRCLED SANS-SERIF DIGIT NINE]
|
3349 | | -"\u2788" => "9"
|
3350 | | -
|
3351 | | -# ➒ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE]
|
3352 | | -"\u2792" => "9"
|
3353 | | -
|
3354 | | -# 9 [FULLWIDTH DIGIT NINE]
|
3355 | | -"\uFF19" => "9"
|
3356 | | -
|
3357 | | -# ⒐ [DIGIT NINE FULL STOP]
|
3358 | | -"\u2490" => "9."
|
3359 | | -
|
3360 | | -# ⑼ [PARENTHESIZED DIGIT NINE]
|
3361 | | -"\u247C" => "(9)"
|
3362 | | -
|
3363 | | -# ⑩ [CIRCLED NUMBER TEN]
|
3364 | | -"\u2469" => "10"
|
3365 | | -
|
3366 | | -# ⓾ [DOUBLE CIRCLED NUMBER TEN]
|
3367 | | -"\u24FE" => "10"
|
3368 | | -
|
3369 | | -# ❿ [DINGBAT NEGATIVE CIRCLED NUMBER TEN]
|
3370 | | -"\u277F" => "10"
|
3371 | | -
|
3372 | | -# ➉ [DINGBAT CIRCLED SANS-SERIF NUMBER TEN]
|
3373 | | -"\u2789" => "10"
|
3374 | | -
|
3375 | | -# ➓ [DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN]
|
3376 | | -"\u2793" => "10"
|
3377 | | -
|
3378 | | -# ⒑ [NUMBER TEN FULL STOP]
|
3379 | | -"\u2491" => "10."
|
3380 | | -
|
3381 | | -# ⑽ [PARENTHESIZED NUMBER TEN]
|
3382 | | -"\u247D" => "(10)"
|
3383 | | -
|
3384 | | -# ⑪ [CIRCLED NUMBER ELEVEN]
|
3385 | | -"\u246A" => "11"
|
3386 | | -
|
3387 | | -# ⓫ [NEGATIVE CIRCLED NUMBER ELEVEN]
|
3388 | | -"\u24EB" => "11"
|
3389 | | -
|
3390 | | -# ⒒ [NUMBER ELEVEN FULL STOP]
|
3391 | | -"\u2492" => "11."
|
3392 | | -
|
3393 | | -# ⑾ [PARENTHESIZED NUMBER ELEVEN]
|
3394 | | -"\u247E" => "(11)"
|
3395 | | -
|
3396 | | -# ⑫ [CIRCLED NUMBER TWELVE]
|
3397 | | -"\u246B" => "12"
|
3398 | | -
|
3399 | | -# ⓬ [NEGATIVE CIRCLED NUMBER TWELVE]
|
3400 | | -"\u24EC" => "12"
|
3401 | | -
|
3402 | | -# ⒓ [NUMBER TWELVE FULL STOP]
|
3403 | | -"\u2493" => "12."
|
3404 | | -
|
3405 | | -# ⑿ [PARENTHESIZED NUMBER TWELVE]
|
3406 | | -"\u247F" => "(12)"
|
3407 | | -
|
3408 | | -# ⑬ [CIRCLED NUMBER THIRTEEN]
|
3409 | | -"\u246C" => "13"
|
3410 | | -
|
3411 | | -# ⓭ [NEGATIVE CIRCLED NUMBER THIRTEEN]
|
3412 | | -"\u24ED" => "13"
|
3413 | | -
|
3414 | | -# ⒔ [NUMBER THIRTEEN FULL STOP]
|
3415 | | -"\u2494" => "13."
|
3416 | | -
|
3417 | | -# ⒀ [PARENTHESIZED NUMBER THIRTEEN]
|
3418 | | -"\u2480" => "(13)"
|
3419 | | -
|
3420 | | -# ⑭ [CIRCLED NUMBER FOURTEEN]
|
3421 | | -"\u246D" => "14"
|
3422 | | -
|
3423 | | -# ⓮ [NEGATIVE CIRCLED NUMBER FOURTEEN]
|
3424 | | -"\u24EE" => "14"
|
3425 | | -
|
3426 | | -# ⒕ [NUMBER FOURTEEN FULL STOP]
|
3427 | | -"\u2495" => "14."
|
3428 | | -
|
3429 | | -# ⒁ [PARENTHESIZED NUMBER FOURTEEN]
|
3430 | | -"\u2481" => "(14)"
|
3431 | | -
|
3432 | | -# ⑮ [CIRCLED NUMBER FIFTEEN]
|
3433 | | -"\u246E" => "15"
|
3434 | | -
|
3435 | | -# ⓯ [NEGATIVE CIRCLED NUMBER FIFTEEN]
|
3436 | | -"\u24EF" => "15"
|
3437 | | -
|
3438 | | -# ⒖ [NUMBER FIFTEEN FULL STOP]
|
3439 | | -"\u2496" => "15."
|
3440 | | -
|
3441 | | -# ⒂ [PARENTHESIZED NUMBER FIFTEEN]
|
3442 | | -"\u2482" => "(15)"
|
3443 | | -
|
3444 | | -# ⑯ [CIRCLED NUMBER SIXTEEN]
|
3445 | | -"\u246F" => "16"
|
3446 | | -
|
3447 | | -# ⓰ [NEGATIVE CIRCLED NUMBER SIXTEEN]
|
3448 | | -"\u24F0" => "16"
|
3449 | | -
|
3450 | | -# ⒗ [NUMBER SIXTEEN FULL STOP]
|
3451 | | -"\u2497" => "16."
|
3452 | | -
|
3453 | | -# ⒃ [PARENTHESIZED NUMBER SIXTEEN]
|
3454 | | -"\u2483" => "(16)"
|
3455 | | -
|
3456 | | -# ⑰ [CIRCLED NUMBER SEVENTEEN]
|
3457 | | -"\u2470" => "17"
|
3458 | | -
|
3459 | | -# ⓱ [NEGATIVE CIRCLED NUMBER SEVENTEEN]
|
3460 | | -"\u24F1" => "17"
|
3461 | | -
|
3462 | | -# ⒘ [NUMBER SEVENTEEN FULL STOP]
|
3463 | | -"\u2498" => "17."
|
3464 | | -
|
3465 | | -# ⒄ [PARENTHESIZED NUMBER SEVENTEEN]
|
3466 | | -"\u2484" => "(17)"
|
3467 | | -
|
3468 | | -# ⑱ [CIRCLED NUMBER EIGHTEEN]
|
3469 | | -"\u2471" => "18"
|
3470 | | -
|
3471 | | -# ⓲ [NEGATIVE CIRCLED NUMBER EIGHTEEN]
|
3472 | | -"\u24F2" => "18"
|
3473 | | -
|
3474 | | -# ⒙ [NUMBER EIGHTEEN FULL STOP]
|
3475 | | -"\u2499" => "18."
|
3476 | | -
|
3477 | | -# ⒅ [PARENTHESIZED NUMBER EIGHTEEN]
|
3478 | | -"\u2485" => "(18)"
|
3479 | | -
|
3480 | | -# ⑲ [CIRCLED NUMBER NINETEEN]
|
3481 | | -"\u2472" => "19"
|
3482 | | -
|
3483 | | -# ⓳ [NEGATIVE CIRCLED NUMBER NINETEEN]
|
3484 | | -"\u24F3" => "19"
|
3485 | | -
|
3486 | | -# ⒚ [NUMBER NINETEEN FULL STOP]
|
3487 | | -"\u249A" => "19."
|
3488 | | -
|
3489 | | -# ⒆ [PARENTHESIZED NUMBER NINETEEN]
|
3490 | | -"\u2486" => "(19)"
|
3491 | | -
|
3492 | | -# ⑳ [CIRCLED NUMBER TWENTY]
|
3493 | | -"\u2473" => "20"
|
3494 | | -
|
3495 | | -# ⓴ [NEGATIVE CIRCLED NUMBER TWENTY]
|
3496 | | -"\u24F4" => "20"
|
3497 | | -
|
3498 | | -# ⒛ [NUMBER TWENTY FULL STOP]
|
3499 | | -"\u249B" => "20."
|
3500 | | -
|
3501 | | -# ⒇ [PARENTHESIZED NUMBER TWENTY]
|
3502 | | -"\u2487" => "(20)"
|
3503 | | -
|
3504 | | -# « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK]
|
3505 | | -"\u00AB" => "\""
|
3506 | | -
|
3507 | | -# » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK]
|
3508 | | -"\u00BB" => "\""
|
3509 | | -
|
3510 | | -# “ [LEFT DOUBLE QUOTATION MARK]
|
3511 | | -"\u201C" => "\""
|
3512 | | -
|
3513 | | -# ” [RIGHT DOUBLE QUOTATION MARK]
|
3514 | | -"\u201D" => "\""
|
3515 | | -
|
3516 | | -# „ [DOUBLE LOW-9 QUOTATION MARK]
|
3517 | | -"\u201E" => "\""
|
3518 | | -
|
3519 | | -# ″ [DOUBLE PRIME]
|
3520 | | -"\u2033" => "\""
|
3521 | | -
|
3522 | | -# ‶ [REVERSED DOUBLE PRIME]
|
3523 | | -"\u2036" => "\""
|
3524 | | -
|
3525 | | -# ❝ [HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT]
|
3526 | | -"\u275D" => "\""
|
3527 | | -
|
3528 | | -# ❞ [HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT]
|
3529 | | -"\u275E" => "\""
|
3530 | | -
|
3531 | | -# ❮ [HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT]
|
3532 | | -"\u276E" => "\""
|
3533 | | -
|
3534 | | -# ❯ [HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT]
|
3535 | | -"\u276F" => "\""
|
3536 | | -
|
3537 | | -# " [FULLWIDTH QUOTATION MARK]
|
3538 | | -"\uFF02" => "\""
|
3539 | | -
|
3540 | | -# ‘ [LEFT SINGLE QUOTATION MARK]
|
3541 | | -"\u2018" => "\'"
|
3542 | | -
|
3543 | | -# ’ [RIGHT SINGLE QUOTATION MARK]
|
3544 | | -"\u2019" => "\'"
|
3545 | | -
|
3546 | | -# ‚ [SINGLE LOW-9 QUOTATION MARK]
|
3547 | | -"\u201A" => "\'"
|
3548 | | -
|
3549 | | -# ‛ [SINGLE HIGH-REVERSED-9 QUOTATION MARK]
|
3550 | | -"\u201B" => "\'"
|
3551 | | -
|
3552 | | -# ′ [PRIME]
|
3553 | | -"\u2032" => "\'"
|
3554 | | -
|
3555 | | -# ‵ [REVERSED PRIME]
|
3556 | | -"\u2035" => "\'"
|
3557 | | -
|
3558 | | -# ‹ [SINGLE LEFT-POINTING ANGLE QUOTATION MARK]
|
3559 | | -"\u2039" => "\'"
|
3560 | | -
|
3561 | | -# › [SINGLE RIGHT-POINTING ANGLE QUOTATION MARK]
|
3562 | | -"\u203A" => "\'"
|
3563 | | -
|
3564 | | -# ❛ [HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT]
|
3565 | | -"\u275B" => "\'"
|
3566 | | -
|
3567 | | -# ❜ [HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT]
|
3568 | | -"\u275C" => "\'"
|
3569 | | -
|
3570 | | -# ' [FULLWIDTH APOSTROPHE]
|
3571 | | -"\uFF07" => "\'"
|
3572 | | -
|
3573 | | -# ‐ [HYPHEN]
|
3574 | | -"\u2010" => "-"
|
3575 | | -
|
3576 | | -# ‑ [NON-BREAKING HYPHEN]
|
3577 | | -"\u2011" => "-"
|
3578 | | -
|
3579 | | -# ‒ [FIGURE DASH]
|
3580 | | -"\u2012" => "-"
|
3581 | | -
|
3582 | | -# – [EN DASH]
|
3583 | | -"\u2013" => "-"
|
3584 | | -
|
3585 | | -# — [EM DASH]
|
3586 | | -"\u2014" => "-"
|
3587 | | -
|
3588 | | -# ⁻ [SUPERSCRIPT MINUS]
|
3589 | | -"\u207B" => "-"
|
3590 | | -
|
3591 | | -# ₋ [SUBSCRIPT MINUS]
|
3592 | | -"\u208B" => "-"
|
3593 | | -
|
3594 | | -# - [FULLWIDTH HYPHEN-MINUS]
|
3595 | | -"\uFF0D" => "-"
|
3596 | | -
|
3597 | | -# ⁅ [LEFT SQUARE BRACKET WITH QUILL]
|
3598 | | -"\u2045" => "["
|
3599 | | -
|
3600 | | -# ❲ [LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT]
|
3601 | | -"\u2772" => "["
|
3602 | | -
|
3603 | | -# [ [FULLWIDTH LEFT SQUARE BRACKET]
|
3604 | | -"\uFF3B" => "["
|
3605 | | -
|
3606 | | -# ⁆ [RIGHT SQUARE BRACKET WITH QUILL]
|
3607 | | -"\u2046" => "]"
|
3608 | | -
|
3609 | | -# ❳ [LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT]
|
3610 | | -"\u2773" => "]"
|
3611 | | -
|
3612 | | -# ] [FULLWIDTH RIGHT SQUARE BRACKET]
|
3613 | | -"\uFF3D" => "]"
|
3614 | | -
|
3615 | | -# ⁽ [SUPERSCRIPT LEFT PARENTHESIS]
|
3616 | | -"\u207D" => "("
|
3617 | | -
|
3618 | | -# ₍ [SUBSCRIPT LEFT PARENTHESIS]
|
3619 | | -"\u208D" => "("
|
3620 | | -
|
3621 | | -# ❨ [MEDIUM LEFT PARENTHESIS ORNAMENT]
|
3622 | | -"\u2768" => "("
|
3623 | | -
|
3624 | | -# ❪ [MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT]
|
3625 | | -"\u276A" => "("
|
3626 | | -
|
3627 | | -# ( [FULLWIDTH LEFT PARENTHESIS]
|
3628 | | -"\uFF08" => "("
|
3629 | | -
|
3630 | | -# ⸨ [LEFT DOUBLE PARENTHESIS]
|
3631 | | -"\u2E28" => "(("
|
3632 | | -
|
3633 | | -# ⁾ [SUPERSCRIPT RIGHT PARENTHESIS]
|
3634 | | -"\u207E" => ")"
|
3635 | | -
|
3636 | | -# ₎ [SUBSCRIPT RIGHT PARENTHESIS]
|
3637 | | -"\u208E" => ")"
|
3638 | | -
|
3639 | | -# ❩ [MEDIUM RIGHT PARENTHESIS ORNAMENT]
|
3640 | | -"\u2769" => ")"
|
3641 | | -
|
3642 | | -# ❫ [MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT]
|
3643 | | -"\u276B" => ")"
|
3644 | | -
|
3645 | | -# ) [FULLWIDTH RIGHT PARENTHESIS]
|
3646 | | -"\uFF09" => ")"
|
3647 | | -
|
3648 | | -# ⸩ [RIGHT DOUBLE PARENTHESIS]
|
3649 | | -"\u2E29" => "))"
|
3650 | | -
|
3651 | | -# ❬ [MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT]
|
3652 | | -"\u276C" => "<"
|
3653 | | -
|
3654 | | -# ❰ [HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT]
|
3655 | | -"\u2770" => "<"
|
3656 | | -
|
3657 | | -# < [FULLWIDTH LESS-THAN SIGN]
|
3658 | | -"\uFF1C" => "<"
|
3659 | | -
|
3660 | | -# ❭ [MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT]
|
3661 | | -"\u276D" => ">"
|
3662 | | -
|
3663 | | -# ❱ [HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT]
|
3664 | | -"\u2771" => ">"
|
3665 | | -
|
3666 | | -# > [FULLWIDTH GREATER-THAN SIGN]
|
3667 | | -"\uFF1E" => ">"
|
3668 | | -
|
3669 | | -# ❴ [MEDIUM LEFT CURLY BRACKET ORNAMENT]
|
3670 | | -"\u2774" => "{"
|
3671 | | -
|
3672 | | -# { [FULLWIDTH LEFT CURLY BRACKET]
|
3673 | | -"\uFF5B" => "{"
|
3674 | | -
|
3675 | | -# ❵ [MEDIUM RIGHT CURLY BRACKET ORNAMENT]
|
3676 | | -"\u2775" => "}"
|
3677 | | -
|
3678 | | -# } [FULLWIDTH RIGHT CURLY BRACKET]
|
3679 | | -"\uFF5D" => "}"
|
3680 | | -
|
3681 | | -# ⁺ [SUPERSCRIPT PLUS SIGN]
|
3682 | | -"\u207A" => "+"
|
3683 | | -
|
3684 | | -# ₊ [SUBSCRIPT PLUS SIGN]
|
3685 | | -"\u208A" => "+"
|
3686 | | -
|
3687 | | -# + [FULLWIDTH PLUS SIGN]
|
3688 | | -"\uFF0B" => "+"
|
3689 | | -
|
3690 | | -# ⁼ [SUPERSCRIPT EQUALS SIGN]
|
3691 | | -"\u207C" => "="
|
3692 | | -
|
3693 | | -# ₌ [SUBSCRIPT EQUALS SIGN]
|
3694 | | -"\u208C" => "="
|
3695 | | -
|
3696 | | -# = [FULLWIDTH EQUALS SIGN]
|
3697 | | -"\uFF1D" => "="
|
3698 | | -
|
3699 | | -# ! [FULLWIDTH EXCLAMATION MARK]
|
3700 | | -"\uFF01" => "!"
|
3701 | | -
|
3702 | | -# ‼ [DOUBLE EXCLAMATION MARK]
|
3703 | | -"\u203C" => "!!"
|
3704 | | -
|
3705 | | -# ⁉ [EXCLAMATION QUESTION MARK]
|
3706 | | -"\u2049" => "!?"
|
3707 | | -
|
3708 | | -# # [FULLWIDTH NUMBER SIGN]
|
3709 | | -"\uFF03" => "#"
|
3710 | | -
|
3711 | | -# $ [FULLWIDTH DOLLAR SIGN]
|
3712 | | -"\uFF04" => "$"
|
3713 | | -
|
3714 | | -# ⁒ [COMMERCIAL MINUS SIGN]
|
3715 | | -"\u2052" => "%"
|
3716 | | -
|
3717 | | -# % [FULLWIDTH PERCENT SIGN]
|
3718 | | -"\uFF05" => "%"
|
3719 | | -
|
3720 | | -# & [FULLWIDTH AMPERSAND]
|
3721 | | -"\uFF06" => "&"
|
3722 | | -
|
3723 | | -# ⁎ [LOW ASTERISK]
|
3724 | | -"\u204E" => "*"
|
3725 | | -
|
3726 | | -# * [FULLWIDTH ASTERISK]
|
3727 | | -"\uFF0A" => "*"
|
3728 | | -
|
3729 | | -# , [FULLWIDTH COMMA]
|
3730 | | -"\uFF0C" => ","
|
3731 | | -
|
3732 | | -# . [FULLWIDTH FULL STOP]
|
3733 | | -"\uFF0E" => "."
|
3734 | | -
|
3735 | | -# ⁄ [FRACTION SLASH]
|
3736 | | -"\u2044" => "/"
|
3737 | | -
|
3738 | | -# / [FULLWIDTH SOLIDUS]
|
3739 | | -"\uFF0F" => "/"
|
3740 | | -
|
3741 | | -# : [FULLWIDTH COLON]
|
3742 | | -"\uFF1A" => ":"
|
3743 | | -
|
3744 | | -# ⁏ [REVERSED SEMICOLON]
|
3745 | | -"\u204F" => ";"
|
3746 | | -
|
3747 | | -# ; [FULLWIDTH SEMICOLON]
|
3748 | | -"\uFF1B" => ";"
|
3749 | | -
|
3750 | | -# ? [FULLWIDTH QUESTION MARK]
|
3751 | | -"\uFF1F" => "?"
|
3752 | | -
|
3753 | | -# ⁇ [DOUBLE QUESTION MARK]
|
3754 | | -"\u2047" => "??"
|
3755 | | -
|
3756 | | -# ⁈ [QUESTION EXCLAMATION MARK]
|
3757 | | -"\u2048" => "?!"
|
3758 | | -
|
3759 | | -# @ [FULLWIDTH COMMERCIAL AT]
|
3760 | | -"\uFF20" => "@"
|
3761 | | -
|
3762 | | -# \ [FULLWIDTH REVERSE SOLIDUS]
|
3763 | | -"\uFF3C" => "\\"
|
3764 | | -
|
3765 | | -# ‸ [CARET]
|
3766 | | -"\u2038" => "^"
|
3767 | | -
|
3768 | | -# ^ [FULLWIDTH CIRCUMFLEX ACCENT]
|
3769 | | -"\uFF3E" => "^"
|
3770 | | -
|
3771 | | -# _ [FULLWIDTH LOW LINE]
|
3772 | | -"\uFF3F" => "_"
|
3773 | | -
|
3774 | | -# ⁓ [SWUNG DASH]
|
3775 | | -"\u2053" => "~"
|
3776 | | -
|
3777 | | -# ~ [FULLWIDTH TILDE]
|
3778 | | -"\uFF5E" => "~"
|
3779 | | -
|
3780 | | -################################################################
|
3781 | | -# Below is the Perl script used to generate the above mappings #
|
3782 | | -# from ASCIIFoldingFilter.java: #
|
3783 | | -################################################################
|
3784 | | -#
|
3785 | | -# #!/usr/bin/perl
|
3786 | | -#
|
3787 | | -# use warnings;
|
3788 | | -# use strict;
|
3789 | | -#
|
3790 | | -# my @source_chars = ();
|
3791 | | -# my @source_char_descriptions = ();
|
3792 | | -# my $target = '';
|
3793 | | -#
|
3794 | | -# while (<>) {
|
3795 | | -# if (/case\s+'(\\u[A-F0-9]+)':\s*\/\/\s*(.*)/i) {
|
3796 | | -# push @source_chars, $1;
|
3797 | | -# push @source_char_descriptions, $2;
|
3798 | | -# next;
|
3799 | | -# }
|
3800 | | -# if (/output\[[^\]]+\]\s*=\s*'(\\'|\\\\|.)'/) {
|
3801 | | -# $target .= $1;
|
3802 | | -# next;
|
3803 | | -# }
|
3804 | | -# if (/break;/) {
|
3805 | | -# $target = "\\\"" if ($target eq '"');
|
3806 | | -# for my $source_char_num (0..$#source_chars) {
|
3807 | | -# print "# $source_char_descriptions[$source_char_num]\n";
|
3808 | | -# print "\"$source_chars[$source_char_num]\" => \"$target\"\n\n";
|
3809 | | -# }
|
3810 | | -# @source_chars = ();
|
3811 | | -# @source_char_descriptions = ();
|
3812 | | -# $target = '';
|
3813 | | -# }
|
3814 | | -# }
|
| 2 | +# The ASF licenses this file to You under the Apache License, Version 2.0 |
| 3 | +# (the "License"); you may not use this file except in compliance with |
| 4 | +# the License. You may obtain a copy of the License at |
| 5 | +# |
| 6 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 7 | +# |
| 8 | +# Unless required by applicable law or agreed to in writing, software |
| 9 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 10 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 11 | +# See the License for the specific language governing permissions and |
| 12 | +# limitations under the License. |
| 13 | + |
| 14 | + |
| 15 | +# This map converts alphabetic, numeric, and symbolic Unicode characters |
| 16 | +# which are not in the first 127 ASCII characters (the "Basic Latin" Unicode |
| 17 | +# block) into their ASCII equivalents, if one exists. |
| 18 | +# |
| 19 | +# Characters from the following Unicode blocks are converted; however, only |
| 20 | +# those characters with reasonable ASCII alternatives are converted: |
| 21 | +# |
| 22 | +# - C1 Controls and Latin-1 Supplement: http://www.unicode.org/charts/PDF/U0080.pdf |
| 23 | +# - Latin Extended-A: http://www.unicode.org/charts/PDF/U0100.pdf |
| 24 | +# - Latin Extended-B: http://www.unicode.org/charts/PDF/U0180.pdf |
| 25 | +# - Latin Extended Additional: http://www.unicode.org/charts/PDF/U1E00.pdf |
| 26 | +# - Latin Extended-C: http://www.unicode.org/charts/PDF/U2C60.pdf |
| 27 | +# - Latin Extended-D: http://www.unicode.org/charts/PDF/UA720.pdf |
| 28 | +# - IPA Extensions: http://www.unicode.org/charts/PDF/U0250.pdf |
| 29 | +# - Phonetic Extensions: http://www.unicode.org/charts/PDF/U1D00.pdf |
| 30 | +# - Phonetic Extensions Supplement: http://www.unicode.org/charts/PDF/U1D80.pdf |
| 31 | +# - General Punctuation: http://www.unicode.org/charts/PDF/U2000.pdf |
| 32 | +# - Superscripts and Subscripts: http://www.unicode.org/charts/PDF/U2070.pdf |
| 33 | +# - Enclosed Alphanumerics: http://www.unicode.org/charts/PDF/U2460.pdf |
| 34 | +# - Dingbats: http://www.unicode.org/charts/PDF/U2700.pdf |
| 35 | +# - Supplemental Punctuation: http://www.unicode.org/charts/PDF/U2E00.pdf |
| 36 | +# - Alphabetic Presentation Forms: http://www.unicode.org/charts/PDF/UFB00.pdf |
| 37 | +# - Halfwidth and Fullwidth Forms: http://www.unicode.org/charts/PDF/UFF00.pdf |
| 38 | +# |
| 39 | +# See: http://en.wikipedia.org/wiki/Latin_characters_in_Unicode |
| 40 | +# |
| 41 | +# The set of character conversions supported by this map is a superset of |
| 42 | +# those supported by the map represented by mapping-ISOLatin1Accent.txt. |
| 43 | +# |
| 44 | +# See the bottom of this file for the Perl script used to generate the contents |
| 45 | +# of this file (without this header) from ASCIIFoldingFilter.java. |
| 46 | + |
| 47 | + |
| 48 | +# Syntax: |
| 49 | +# "source" => "target" |
| 50 | +# "source".length() > 0 (source cannot be empty.) |
| 51 | +# "target".length() >= 0 (target can be empty.) |
| 52 | + |
| 53 | + |
| 54 | +# À [LATIN CAPITAL LETTER A WITH GRAVE] |
| 55 | +"\u00C0" => "A" |
| 56 | + |
| 57 | +# Á [LATIN CAPITAL LETTER A WITH ACUTE] |
| 58 | +"\u00C1" => "A" |
| 59 | + |
| 60 | +# Â [LATIN CAPITAL LETTER A WITH CIRCUMFLEX] |
| 61 | +"\u00C2" => "A" |
| 62 | + |
| 63 | +# Ã [LATIN CAPITAL LETTER A WITH TILDE] |
| 64 | +"\u00C3" => "A" |
| 65 | + |
| 66 | +# Ä [LATIN CAPITAL LETTER A WITH DIAERESIS] |
| 67 | +"\u00C4" => "A" |
| 68 | + |
| 69 | +# Å [LATIN CAPITAL LETTER A WITH RING ABOVE] |
| 70 | +"\u00C5" => "A" |
| 71 | + |
| 72 | +# Ā [LATIN CAPITAL LETTER A WITH MACRON] |
| 73 | +"\u0100" => "A" |
| 74 | + |
| 75 | +# Ă [LATIN CAPITAL LETTER A WITH BREVE] |
| 76 | +"\u0102" => "A" |
| 77 | + |
| 78 | +# Ą [LATIN CAPITAL LETTER A WITH OGONEK] |
| 79 | +"\u0104" => "A" |
| 80 | + |
| 81 | +# Ə http://en.wikipedia.org/wiki/Schwa [LATIN CAPITAL LETTER SCHWA] |
| 82 | +"\u018F" => "A" |
| 83 | + |
| 84 | +# Ǎ [LATIN CAPITAL LETTER A WITH CARON] |
| 85 | +"\u01CD" => "A" |
| 86 | + |
| 87 | +# Ǟ [LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON] |
| 88 | +"\u01DE" => "A" |
| 89 | + |
| 90 | +# Ǡ [LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON] |
| 91 | +"\u01E0" => "A" |
| 92 | + |
| 93 | +# Ǻ [LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE] |
| 94 | +"\u01FA" => "A" |
| 95 | + |
| 96 | +# Ȁ [LATIN CAPITAL LETTER A WITH DOUBLE GRAVE] |
| 97 | +"\u0200" => "A" |
| 98 | + |
| 99 | +# Ȃ [LATIN CAPITAL LETTER A WITH INVERTED BREVE] |
| 100 | +"\u0202" => "A" |
| 101 | + |
| 102 | +# Ȧ [LATIN CAPITAL LETTER A WITH DOT ABOVE] |
| 103 | +"\u0226" => "A" |
| 104 | + |
| 105 | +# Ⱥ [LATIN CAPITAL LETTER A WITH STROKE] |
| 106 | +"\u023A" => "A" |
| 107 | + |
| 108 | +# ᴀ [LATIN LETTER SMALL CAPITAL A] |
| 109 | +"\u1D00" => "A" |
| 110 | + |
| 111 | +# Ḁ [LATIN CAPITAL LETTER A WITH RING BELOW] |
| 112 | +"\u1E00" => "A" |
| 113 | + |
| 114 | +# Ạ [LATIN CAPITAL LETTER A WITH DOT BELOW] |
| 115 | +"\u1EA0" => "A" |
| 116 | + |
| 117 | +# Ả [LATIN CAPITAL LETTER A WITH HOOK ABOVE] |
| 118 | +"\u1EA2" => "A" |
| 119 | + |
| 120 | +# Ấ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE] |
| 121 | +"\u1EA4" => "A" |
| 122 | + |
| 123 | +# Ầ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE] |
| 124 | +"\u1EA6" => "A" |
| 125 | + |
| 126 | +# Ẩ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE] |
| 127 | +"\u1EA8" => "A" |
| 128 | + |
| 129 | +# Ẫ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE] |
| 130 | +"\u1EAA" => "A" |
| 131 | + |
| 132 | +# Ậ [LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW] |
| 133 | +"\u1EAC" => "A" |
| 134 | + |
| 135 | +# Ắ [LATIN CAPITAL LETTER A WITH BREVE AND ACUTE] |
| 136 | +"\u1EAE" => "A" |
| 137 | + |
| 138 | +# Ằ [LATIN CAPITAL LETTER A WITH BREVE AND GRAVE] |
| 139 | +"\u1EB0" => "A" |
| 140 | + |
| 141 | +# Ẳ [LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE] |
| 142 | +"\u1EB2" => "A" |
| 143 | + |
| 144 | +# Ẵ [LATIN CAPITAL LETTER A WITH BREVE AND TILDE] |
| 145 | +"\u1EB4" => "A" |
| 146 | + |
| 147 | +# Ặ [LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW] |
| 148 | +"\u1EB6" => "A" |
| 149 | + |
| 150 | +# Ⓐ [CIRCLED LATIN CAPITAL LETTER A] |
| 151 | +"\u24B6" => "A" |
| 152 | + |
| 153 | +# A [FULLWIDTH LATIN CAPITAL LETTER A] |
| 154 | +"\uFF21" => "A" |
| 155 | + |
| 156 | +# à [LATIN SMALL LETTER A WITH GRAVE] |
| 157 | +"\u00E0" => "a" |
| 158 | + |
| 159 | +# á [LATIN SMALL LETTER A WITH ACUTE] |
| 160 | +"\u00E1" => "a" |
| 161 | + |
| 162 | +# â [LATIN SMALL LETTER A WITH CIRCUMFLEX] |
| 163 | +"\u00E2" => "a" |
| 164 | + |
| 165 | +# ã [LATIN SMALL LETTER A WITH TILDE] |
| 166 | +"\u00E3" => "a" |
| 167 | + |
| 168 | +# ä [LATIN SMALL LETTER A WITH DIAERESIS] |
| 169 | +"\u00E4" => "a" |
| 170 | + |
| 171 | +# å [LATIN SMALL LETTER A WITH RING ABOVE] |
| 172 | +"\u00E5" => "a" |
| 173 | + |
| 174 | +# ā [LATIN SMALL LETTER A WITH MACRON] |
| 175 | +"\u0101" => "a" |
| 176 | + |
| 177 | +# ă [LATIN SMALL LETTER A WITH BREVE] |
| 178 | +"\u0103" => "a" |
| 179 | + |
| 180 | +# ą [LATIN SMALL LETTER A WITH OGONEK] |
| 181 | +"\u0105" => "a" |
| 182 | + |
| 183 | +# ǎ [LATIN SMALL LETTER A WITH CARON] |
| 184 | +"\u01CE" => "a" |
| 185 | + |
| 186 | +# ǟ [LATIN SMALL LETTER A WITH DIAERESIS AND MACRON] |
| 187 | +"\u01DF" => "a" |
| 188 | + |
| 189 | +# ǡ [LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON] |
| 190 | +"\u01E1" => "a" |
| 191 | + |
| 192 | +# ǻ [LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE] |
| 193 | +"\u01FB" => "a" |
| 194 | + |
| 195 | +# ȁ [LATIN SMALL LETTER A WITH DOUBLE GRAVE] |
| 196 | +"\u0201" => "a" |
| 197 | + |
| 198 | +# ȃ [LATIN SMALL LETTER A WITH INVERTED BREVE] |
| 199 | +"\u0203" => "a" |
| 200 | + |
| 201 | +# ȧ [LATIN SMALL LETTER A WITH DOT ABOVE] |
| 202 | +"\u0227" => "a" |
| 203 | + |
| 204 | +# ɐ [LATIN SMALL LETTER TURNED A] |
| 205 | +"\u0250" => "a" |
| 206 | + |
| 207 | +# ə [LATIN SMALL LETTER SCHWA] |
| 208 | +"\u0259" => "a" |
| 209 | + |
| 210 | +# ɚ [LATIN SMALL LETTER SCHWA WITH HOOK] |
| 211 | +"\u025A" => "a" |
| 212 | + |
| 213 | +# ᶏ [LATIN SMALL LETTER A WITH RETROFLEX HOOK] |
| 214 | +"\u1D8F" => "a" |
| 215 | + |
| 216 | +# ᶕ [LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK] |
| 217 | +"\u1D95" => "a" |
| 218 | + |
| 219 | +# ạ [LATIN SMALL LETTER A WITH RING BELOW] |
| 220 | +"\u1E01" => "a" |
| 221 | + |
| 222 | +# ả [LATIN SMALL LETTER A WITH RIGHT HALF RING] |
| 223 | +"\u1E9A" => "a" |
| 224 | + |
| 225 | +# ạ [LATIN SMALL LETTER A WITH DOT BELOW] |
| 226 | +"\u1EA1" => "a" |
| 227 | + |
| 228 | +# ả [LATIN SMALL LETTER A WITH HOOK ABOVE] |
| 229 | +"\u1EA3" => "a" |
| 230 | + |
| 231 | +# ấ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE] |
| 232 | +"\u1EA5" => "a" |
| 233 | + |
| 234 | +# ầ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE] |
| 235 | +"\u1EA7" => "a" |
| 236 | + |
| 237 | +# ẩ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE] |
| 238 | +"\u1EA9" => "a" |
| 239 | + |
| 240 | +# ẫ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE] |
| 241 | +"\u1EAB" => "a" |
| 242 | + |
| 243 | +# ậ [LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW] |
| 244 | +"\u1EAD" => "a" |
| 245 | + |
| 246 | +# ắ [LATIN SMALL LETTER A WITH BREVE AND ACUTE] |
| 247 | +"\u1EAF" => "a" |
| 248 | + |
| 249 | +# ằ [LATIN SMALL LETTER A WITH BREVE AND GRAVE] |
| 250 | +"\u1EB1" => "a" |
| 251 | + |
| 252 | +# ẳ [LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE] |
| 253 | +"\u1EB3" => "a" |
| 254 | + |
| 255 | +# ẵ [LATIN SMALL LETTER A WITH BREVE AND TILDE] |
| 256 | +"\u1EB5" => "a" |
| 257 | + |
| 258 | +# ặ [LATIN SMALL LETTER A WITH BREVE AND DOT BELOW] |
| 259 | +"\u1EB7" => "a" |
| 260 | + |
| 261 | +# ₐ [LATIN SUBSCRIPT SMALL LETTER A] |
| 262 | +"\u2090" => "a" |
| 263 | + |
| 264 | +# ₔ [LATIN SUBSCRIPT SMALL LETTER SCHWA] |
| 265 | +"\u2094" => "a" |
| 266 | + |
| 267 | +# ⓐ [CIRCLED LATIN SMALL LETTER A] |
| 268 | +"\u24D0" => "a" |
| 269 | + |
| 270 | +# ⱥ [LATIN SMALL LETTER A WITH STROKE] |
| 271 | +"\u2C65" => "a" |
| 272 | + |
| 273 | +# Ɐ [LATIN CAPITAL LETTER TURNED A] |
| 274 | +"\u2C6F" => "a" |
| 275 | + |
| 276 | +# a [FULLWIDTH LATIN SMALL LETTER A] |
| 277 | +"\uFF41" => "a" |
| 278 | + |
| 279 | +# Ꜳ [LATIN CAPITAL LETTER AA] |
| 280 | +"\uA732" => "AA" |
| 281 | + |
| 282 | +# Æ [LATIN CAPITAL LETTER AE] |
| 283 | +"\u00C6" => "AE" |
| 284 | + |
| 285 | +# Ǣ [LATIN CAPITAL LETTER AE WITH MACRON] |
| 286 | +"\u01E2" => "AE" |
| 287 | + |
| 288 | +# Ǽ [LATIN CAPITAL LETTER AE WITH ACUTE] |
| 289 | +"\u01FC" => "AE" |
| 290 | + |
| 291 | +# ᴁ [LATIN LETTER SMALL CAPITAL AE] |
| 292 | +"\u1D01" => "AE" |
| 293 | + |
| 294 | +# Ꜵ [LATIN CAPITAL LETTER AO] |
| 295 | +"\uA734" => "AO" |
| 296 | + |
| 297 | +# Ꜷ [LATIN CAPITAL LETTER AU] |
| 298 | +"\uA736" => "AU" |
| 299 | + |
| 300 | +# Ꜹ [LATIN CAPITAL LETTER AV] |
| 301 | +"\uA738" => "AV" |
| 302 | + |
| 303 | +# Ꜻ [LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR] |
| 304 | +"\uA73A" => "AV" |
| 305 | + |
| 306 | +# Ꜽ [LATIN CAPITAL LETTER AY] |
| 307 | +"\uA73C" => "AY" |
| 308 | + |
| 309 | +# ⒜ [PARENTHESIZED LATIN SMALL LETTER A] |
| 310 | +"\u249C" => "(a)" |
| 311 | + |
| 312 | +# ꜳ [LATIN SMALL LETTER AA] |
| 313 | +"\uA733" => "aa" |
| 314 | + |
| 315 | +# æ [LATIN SMALL LETTER AE] |
| 316 | +"\u00E6" => "ae" |
| 317 | + |
| 318 | +# ǣ [LATIN SMALL LETTER AE WITH MACRON] |
| 319 | +"\u01E3" => "ae" |
| 320 | + |
| 321 | +# ǽ [LATIN SMALL LETTER AE WITH ACUTE] |
| 322 | +"\u01FD" => "ae" |
| 323 | + |
| 324 | +# ᴂ [LATIN SMALL LETTER TURNED AE] |
| 325 | +"\u1D02" => "ae" |
| 326 | + |
| 327 | +# ꜵ [LATIN SMALL LETTER AO] |
| 328 | +"\uA735" => "ao" |
| 329 | + |
| 330 | +# ꜷ [LATIN SMALL LETTER AU] |
| 331 | +"\uA737" => "au" |
| 332 | + |
| 333 | +# ꜹ [LATIN SMALL LETTER AV] |
| 334 | +"\uA739" => "av" |
| 335 | + |
| 336 | +# ꜻ [LATIN SMALL LETTER AV WITH HORIZONTAL BAR] |
| 337 | +"\uA73B" => "av" |
| 338 | + |
| 339 | +# ꜽ [LATIN SMALL LETTER AY] |
| 340 | +"\uA73D" => "ay" |
| 341 | + |
| 342 | +# Ɓ [LATIN CAPITAL LETTER B WITH HOOK] |
| 343 | +"\u0181" => "B" |
| 344 | + |
| 345 | +# Ƃ [LATIN CAPITAL LETTER B WITH TOPBAR] |
| 346 | +"\u0182" => "B" |
| 347 | + |
| 348 | +# Ƀ [LATIN CAPITAL LETTER B WITH STROKE] |
| 349 | +"\u0243" => "B" |
| 350 | + |
| 351 | +# ʙ [LATIN LETTER SMALL CAPITAL B] |
| 352 | +"\u0299" => "B" |
| 353 | + |
| 354 | +# ᴃ [LATIN LETTER SMALL CAPITAL BARRED B] |
| 355 | +"\u1D03" => "B" |
| 356 | + |
| 357 | +# Ḃ [LATIN CAPITAL LETTER B WITH DOT ABOVE] |
| 358 | +"\u1E02" => "B" |
| 359 | + |
| 360 | +# Ḅ [LATIN CAPITAL LETTER B WITH DOT BELOW] |
| 361 | +"\u1E04" => "B" |
| 362 | + |
| 363 | +# Ḇ [LATIN CAPITAL LETTER B WITH LINE BELOW] |
| 364 | +"\u1E06" => "B" |
| 365 | + |
| 366 | +# Ⓑ [CIRCLED LATIN CAPITAL LETTER B] |
| 367 | +"\u24B7" => "B" |
| 368 | + |
| 369 | +# B [FULLWIDTH LATIN CAPITAL LETTER B] |
| 370 | +"\uFF22" => "B" |
| 371 | + |
| 372 | +# ƀ [LATIN SMALL LETTER B WITH STROKE] |
| 373 | +"\u0180" => "b" |
| 374 | + |
| 375 | +# ƃ [LATIN SMALL LETTER B WITH TOPBAR] |
| 376 | +"\u0183" => "b" |
| 377 | + |
| 378 | +# ɓ [LATIN SMALL LETTER B WITH HOOK] |
| 379 | +"\u0253" => "b" |
| 380 | + |
| 381 | +# ᵬ [LATIN SMALL LETTER B WITH MIDDLE TILDE] |
| 382 | +"\u1D6C" => "b" |
| 383 | + |
| 384 | +# ᶀ [LATIN SMALL LETTER B WITH PALATAL HOOK] |
| 385 | +"\u1D80" => "b" |
| 386 | + |
| 387 | +# ḃ [LATIN SMALL LETTER B WITH DOT ABOVE] |
| 388 | +"\u1E03" => "b" |
| 389 | + |
| 390 | +# ḅ [LATIN SMALL LETTER B WITH DOT BELOW] |
| 391 | +"\u1E05" => "b" |
| 392 | + |
| 393 | +# ḇ [LATIN SMALL LETTER B WITH LINE BELOW] |
| 394 | +"\u1E07" => "b" |
| 395 | + |
| 396 | +# ⓑ [CIRCLED LATIN SMALL LETTER B] |
| 397 | +"\u24D1" => "b" |
| 398 | + |
| 399 | +# b [FULLWIDTH LATIN SMALL LETTER B] |
| 400 | +"\uFF42" => "b" |
| 401 | + |
| 402 | +# ⒝ [PARENTHESIZED LATIN SMALL LETTER B] |
| 403 | +"\u249D" => "(b)" |
| 404 | + |
| 405 | +# Ç [LATIN CAPITAL LETTER C WITH CEDILLA] |
| 406 | +"\u00C7" => "C" |
| 407 | + |
| 408 | +# Ć [LATIN CAPITAL LETTER C WITH ACUTE] |
| 409 | +"\u0106" => "C" |
| 410 | + |
| 411 | +# Ĉ [LATIN CAPITAL LETTER C WITH CIRCUMFLEX] |
| 412 | +"\u0108" => "C" |
| 413 | + |
| 414 | +# Ċ [LATIN CAPITAL LETTER C WITH DOT ABOVE] |
| 415 | +"\u010A" => "C" |
| 416 | + |
| 417 | +# Č [LATIN CAPITAL LETTER C WITH CARON] |
| 418 | +"\u010C" => "C" |
| 419 | + |
| 420 | +# Ƈ [LATIN CAPITAL LETTER C WITH HOOK] |
| 421 | +"\u0187" => "C" |
| 422 | + |
| 423 | +# Ȼ [LATIN CAPITAL LETTER C WITH STROKE] |
| 424 | +"\u023B" => "C" |
| 425 | + |
| 426 | +# ʗ [LATIN LETTER STRETCHED C] |
| 427 | +"\u0297" => "C" |
| 428 | + |
| 429 | +# ᴄ [LATIN LETTER SMALL CAPITAL C] |
| 430 | +"\u1D04" => "C" |
| 431 | + |
| 432 | +# Ḉ [LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE] |
| 433 | +"\u1E08" => "C" |
| 434 | + |
| 435 | +# Ⓒ [CIRCLED LATIN CAPITAL LETTER C] |
| 436 | +"\u24B8" => "C" |
| 437 | + |
| 438 | +# C [FULLWIDTH LATIN CAPITAL LETTER C] |
| 439 | +"\uFF23" => "C" |
| 440 | + |
| 441 | +# ç [LATIN SMALL LETTER C WITH CEDILLA] |
| 442 | +"\u00E7" => "c" |
| 443 | + |
| 444 | +# ć [LATIN SMALL LETTER C WITH ACUTE] |
| 445 | +"\u0107" => "c" |
| 446 | + |
| 447 | +# ĉ [LATIN SMALL LETTER C WITH CIRCUMFLEX] |
| 448 | +"\u0109" => "c" |
| 449 | + |
| 450 | +# ċ [LATIN SMALL LETTER C WITH DOT ABOVE] |
| 451 | +"\u010B" => "c" |
| 452 | + |
| 453 | +# č [LATIN SMALL LETTER C WITH CARON] |
| 454 | +"\u010D" => "c" |
| 455 | + |
| 456 | +# ƈ [LATIN SMALL LETTER C WITH HOOK] |
| 457 | +"\u0188" => "c" |
| 458 | + |
| 459 | +# ȼ [LATIN SMALL LETTER C WITH STROKE] |
| 460 | +"\u023C" => "c" |
| 461 | + |
| 462 | +# ɕ [LATIN SMALL LETTER C WITH CURL] |
| 463 | +"\u0255" => "c" |
| 464 | + |
| 465 | +# ḉ [LATIN SMALL LETTER C WITH CEDILLA AND ACUTE] |
| 466 | +"\u1E09" => "c" |
| 467 | + |
| 468 | +# ↄ [LATIN SMALL LETTER REVERSED C] |
| 469 | +"\u2184" => "c" |
| 470 | + |
| 471 | +# ⓒ [CIRCLED LATIN SMALL LETTER C] |
| 472 | +"\u24D2" => "c" |
| 473 | + |
| 474 | +# Ꜿ [LATIN CAPITAL LETTER REVERSED C WITH DOT] |
| 475 | +"\uA73E" => "c" |
| 476 | + |
| 477 | +# ꜿ [LATIN SMALL LETTER REVERSED C WITH DOT] |
| 478 | +"\uA73F" => "c" |
| 479 | + |
| 480 | +# c [FULLWIDTH LATIN SMALL LETTER C] |
| 481 | +"\uFF43" => "c" |
| 482 | + |
| 483 | +# ⒞ [PARENTHESIZED LATIN SMALL LETTER C] |
| 484 | +"\u249E" => "(c)" |
| 485 | + |
| 486 | +# Ð [LATIN CAPITAL LETTER ETH] |
| 487 | +"\u00D0" => "D" |
| 488 | + |
| 489 | +# Ď [LATIN CAPITAL LETTER D WITH CARON] |
| 490 | +"\u010E" => "D" |
| 491 | + |
| 492 | +# Đ [LATIN CAPITAL LETTER D WITH STROKE] |
| 493 | +"\u0110" => "D" |
| 494 | + |
| 495 | +# Ɖ [LATIN CAPITAL LETTER AFRICAN D] |
| 496 | +"\u0189" => "D" |
| 497 | + |
| 498 | +# Ɗ [LATIN CAPITAL LETTER D WITH HOOK] |
| 499 | +"\u018A" => "D" |
| 500 | + |
| 501 | +# Ƌ [LATIN CAPITAL LETTER D WITH TOPBAR] |
| 502 | +"\u018B" => "D" |
| 503 | + |
| 504 | +# ᴅ [LATIN LETTER SMALL CAPITAL D] |
| 505 | +"\u1D05" => "D" |
| 506 | + |
| 507 | +# ᴆ [LATIN LETTER SMALL CAPITAL ETH] |
| 508 | +"\u1D06" => "D" |
| 509 | + |
| 510 | +# Ḋ [LATIN CAPITAL LETTER D WITH DOT ABOVE] |
| 511 | +"\u1E0A" => "D" |
| 512 | + |
| 513 | +# Ḍ [LATIN CAPITAL LETTER D WITH DOT BELOW] |
| 514 | +"\u1E0C" => "D" |
| 515 | + |
| 516 | +# Ḏ [LATIN CAPITAL LETTER D WITH LINE BELOW] |
| 517 | +"\u1E0E" => "D" |
| 518 | + |
| 519 | +# Ḑ [LATIN CAPITAL LETTER D WITH CEDILLA] |
| 520 | +"\u1E10" => "D" |
| 521 | + |
| 522 | +# Ḓ [LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW] |
| 523 | +"\u1E12" => "D" |
| 524 | + |
| 525 | +# Ⓓ [CIRCLED LATIN CAPITAL LETTER D] |
| 526 | +"\u24B9" => "D" |
| 527 | + |
| 528 | +# Ꝺ [LATIN CAPITAL LETTER INSULAR D] |
| 529 | +"\uA779" => "D" |
| 530 | + |
| 531 | +# D [FULLWIDTH LATIN CAPITAL LETTER D] |
| 532 | +"\uFF24" => "D" |
| 533 | + |
| 534 | +# ð [LATIN SMALL LETTER ETH] |
| 535 | +"\u00F0" => "d" |
| 536 | + |
| 537 | +# ď [LATIN SMALL LETTER D WITH CARON] |
| 538 | +"\u010F" => "d" |
| 539 | + |
| 540 | +# đ [LATIN SMALL LETTER D WITH STROKE] |
| 541 | +"\u0111" => "d" |
| 542 | + |
| 543 | +# ƌ [LATIN SMALL LETTER D WITH TOPBAR] |
| 544 | +"\u018C" => "d" |
| 545 | + |
| 546 | +# ȡ [LATIN SMALL LETTER D WITH CURL] |
| 547 | +"\u0221" => "d" |
| 548 | + |
| 549 | +# ɖ [LATIN SMALL LETTER D WITH TAIL] |
| 550 | +"\u0256" => "d" |
| 551 | + |
| 552 | +# ɗ [LATIN SMALL LETTER D WITH HOOK] |
| 553 | +"\u0257" => "d" |
| 554 | + |
| 555 | +# ᵭ [LATIN SMALL LETTER D WITH MIDDLE TILDE] |
| 556 | +"\u1D6D" => "d" |
| 557 | + |
| 558 | +# ᶁ [LATIN SMALL LETTER D WITH PALATAL HOOK] |
| 559 | +"\u1D81" => "d" |
| 560 | + |
| 561 | +# ᶑ [LATIN SMALL LETTER D WITH HOOK AND TAIL] |
| 562 | +"\u1D91" => "d" |
| 563 | + |
| 564 | +# ḋ [LATIN SMALL LETTER D WITH DOT ABOVE] |
| 565 | +"\u1E0B" => "d" |
| 566 | + |
| 567 | +# ḍ [LATIN SMALL LETTER D WITH DOT BELOW] |
| 568 | +"\u1E0D" => "d" |
| 569 | + |
| 570 | +# ḏ [LATIN SMALL LETTER D WITH LINE BELOW] |
| 571 | +"\u1E0F" => "d" |
| 572 | + |
| 573 | +# ḑ [LATIN SMALL LETTER D WITH CEDILLA] |
| 574 | +"\u1E11" => "d" |
| 575 | + |
| 576 | +# ḓ [LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW] |
| 577 | +"\u1E13" => "d" |
| 578 | + |
| 579 | +# ⓓ [CIRCLED LATIN SMALL LETTER D] |
| 580 | +"\u24D3" => "d" |
| 581 | + |
| 582 | +# ꝺ [LATIN SMALL LETTER INSULAR D] |
| 583 | +"\uA77A" => "d" |
| 584 | + |
| 585 | +# d [FULLWIDTH LATIN SMALL LETTER D] |
| 586 | +"\uFF44" => "d" |
| 587 | + |
| 588 | +# DŽ [LATIN CAPITAL LETTER DZ WITH CARON] |
| 589 | +"\u01C4" => "DZ" |
| 590 | + |
| 591 | +# DZ [LATIN CAPITAL LETTER DZ] |
| 592 | +"\u01F1" => "DZ" |
| 593 | + |
| 594 | +# Dž [LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON] |
| 595 | +"\u01C5" => "Dz" |
| 596 | + |
| 597 | +# Dz [LATIN CAPITAL LETTER D WITH SMALL LETTER Z] |
| 598 | +"\u01F2" => "Dz" |
| 599 | + |
| 600 | +# ⒟ [PARENTHESIZED LATIN SMALL LETTER D] |
| 601 | +"\u249F" => "(d)" |
| 602 | + |
| 603 | +# ȸ [LATIN SMALL LETTER DB DIGRAPH] |
| 604 | +"\u0238" => "db" |
| 605 | + |
| 606 | +# dž [LATIN SMALL LETTER DZ WITH CARON] |
| 607 | +"\u01C6" => "dz" |
| 608 | + |
| 609 | +# dz [LATIN SMALL LETTER DZ] |
| 610 | +"\u01F3" => "dz" |
| 611 | + |
| 612 | +# ʣ [LATIN SMALL LETTER DZ DIGRAPH] |
| 613 | +"\u02A3" => "dz" |
| 614 | + |
| 615 | +# ʥ [LATIN SMALL LETTER DZ DIGRAPH WITH CURL] |
| 616 | +"\u02A5" => "dz" |
| 617 | + |
| 618 | +# È [LATIN CAPITAL LETTER E WITH GRAVE] |
| 619 | +"\u00C8" => "E" |
| 620 | + |
| 621 | +# É [LATIN CAPITAL LETTER E WITH ACUTE] |
| 622 | +"\u00C9" => "E" |
| 623 | + |
| 624 | +# Ê [LATIN CAPITAL LETTER E WITH CIRCUMFLEX] |
| 625 | +"\u00CA" => "E" |
| 626 | + |
| 627 | +# Ë [LATIN CAPITAL LETTER E WITH DIAERESIS] |
| 628 | +"\u00CB" => "E" |
| 629 | + |
| 630 | +# Ē [LATIN CAPITAL LETTER E WITH MACRON] |
| 631 | +"\u0112" => "E" |
| 632 | + |
| 633 | +# Ĕ [LATIN CAPITAL LETTER E WITH BREVE] |
| 634 | +"\u0114" => "E" |
| 635 | + |
| 636 | +# Ė [LATIN CAPITAL LETTER E WITH DOT ABOVE] |
| 637 | +"\u0116" => "E" |
| 638 | + |
| 639 | +# Ę [LATIN CAPITAL LETTER E WITH OGONEK] |
| 640 | +"\u0118" => "E" |
| 641 | + |
| 642 | +# Ě [LATIN CAPITAL LETTER E WITH CARON] |
| 643 | +"\u011A" => "E" |
| 644 | + |
| 645 | +# Ǝ [LATIN CAPITAL LETTER REVERSED E] |
| 646 | +"\u018E" => "E" |
| 647 | + |
| 648 | +# Ɛ [LATIN CAPITAL LETTER OPEN E] |
| 649 | +"\u0190" => "E" |
| 650 | + |
| 651 | +# Ȅ [LATIN CAPITAL LETTER E WITH DOUBLE GRAVE] |
| 652 | +"\u0204" => "E" |
| 653 | + |
| 654 | +# Ȇ [LATIN CAPITAL LETTER E WITH INVERTED BREVE] |
| 655 | +"\u0206" => "E" |
| 656 | + |
| 657 | +# Ȩ [LATIN CAPITAL LETTER E WITH CEDILLA] |
| 658 | +"\u0228" => "E" |
| 659 | + |
| 660 | +# Ɇ [LATIN CAPITAL LETTER E WITH STROKE] |
| 661 | +"\u0246" => "E" |
| 662 | + |
| 663 | +# ᴇ [LATIN LETTER SMALL CAPITAL E] |
| 664 | +"\u1D07" => "E" |
| 665 | + |
| 666 | +# Ḕ [LATIN CAPITAL LETTER E WITH MACRON AND GRAVE] |
| 667 | +"\u1E14" => "E" |
| 668 | + |
| 669 | +# Ḗ [LATIN CAPITAL LETTER E WITH MACRON AND ACUTE] |
| 670 | +"\u1E16" => "E" |
| 671 | + |
| 672 | +# Ḙ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW] |
| 673 | +"\u1E18" => "E" |
| 674 | + |
| 675 | +# Ḛ [LATIN CAPITAL LETTER E WITH TILDE BELOW] |
| 676 | +"\u1E1A" => "E" |
| 677 | + |
| 678 | +# Ḝ [LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE] |
| 679 | +"\u1E1C" => "E" |
| 680 | + |
| 681 | +# Ẹ [LATIN CAPITAL LETTER E WITH DOT BELOW] |
| 682 | +"\u1EB8" => "E" |
| 683 | + |
| 684 | +# Ẻ [LATIN CAPITAL LETTER E WITH HOOK ABOVE] |
| 685 | +"\u1EBA" => "E" |
| 686 | + |
| 687 | +# Ẽ [LATIN CAPITAL LETTER E WITH TILDE] |
| 688 | +"\u1EBC" => "E" |
| 689 | + |
| 690 | +# Ế [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE] |
| 691 | +"\u1EBE" => "E" |
| 692 | + |
| 693 | +# Ề [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE] |
| 694 | +"\u1EC0" => "E" |
| 695 | + |
| 696 | +# Ể [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE] |
| 697 | +"\u1EC2" => "E" |
| 698 | + |
| 699 | +# Ễ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE] |
| 700 | +"\u1EC4" => "E" |
| 701 | + |
| 702 | +# Ệ [LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW] |
| 703 | +"\u1EC6" => "E" |
| 704 | + |
| 705 | +# Ⓔ [CIRCLED LATIN CAPITAL LETTER E] |
| 706 | +"\u24BA" => "E" |
| 707 | + |
| 708 | +# ⱻ [LATIN LETTER SMALL CAPITAL TURNED E] |
| 709 | +"\u2C7B" => "E" |
| 710 | + |
| 711 | +# E [FULLWIDTH LATIN CAPITAL LETTER E] |
| 712 | +"\uFF25" => "E" |
| 713 | + |
| 714 | +# è [LATIN SMALL LETTER E WITH GRAVE] |
| 715 | +"\u00E8" => "e" |
| 716 | + |
| 717 | +# é [LATIN SMALL LETTER E WITH ACUTE] |
| 718 | +"\u00E9" => "e" |
| 719 | + |
| 720 | +# ê [LATIN SMALL LETTER E WITH CIRCUMFLEX] |
| 721 | +"\u00EA" => "e" |
| 722 | + |
| 723 | +# ë [LATIN SMALL LETTER E WITH DIAERESIS] |
| 724 | +"\u00EB" => "e" |
| 725 | + |
| 726 | +# ē [LATIN SMALL LETTER E WITH MACRON] |
| 727 | +"\u0113" => "e" |
| 728 | + |
| 729 | +# ĕ [LATIN SMALL LETTER E WITH BREVE] |
| 730 | +"\u0115" => "e" |
| 731 | + |
| 732 | +# ė [LATIN SMALL LETTER E WITH DOT ABOVE] |
| 733 | +"\u0117" => "e" |
| 734 | + |
| 735 | +# ę [LATIN SMALL LETTER E WITH OGONEK] |
| 736 | +"\u0119" => "e" |
| 737 | + |
| 738 | +# ě [LATIN SMALL LETTER E WITH CARON] |
| 739 | +"\u011B" => "e" |
| 740 | + |
| 741 | +# ǝ [LATIN SMALL LETTER TURNED E] |
| 742 | +"\u01DD" => "e" |
| 743 | + |
| 744 | +# ȅ [LATIN SMALL LETTER E WITH DOUBLE GRAVE] |
| 745 | +"\u0205" => "e" |
| 746 | + |
| 747 | +# ȇ [LATIN SMALL LETTER E WITH INVERTED BREVE] |
| 748 | +"\u0207" => "e" |
| 749 | + |
| 750 | +# ȩ [LATIN SMALL LETTER E WITH CEDILLA] |
| 751 | +"\u0229" => "e" |
| 752 | + |
| 753 | +# ɇ [LATIN SMALL LETTER E WITH STROKE] |
| 754 | +"\u0247" => "e" |
| 755 | + |
| 756 | +# ɘ [LATIN SMALL LETTER REVERSED E] |
| 757 | +"\u0258" => "e" |
| 758 | + |
| 759 | +# ɛ [LATIN SMALL LETTER OPEN E] |
| 760 | +"\u025B" => "e" |
| 761 | + |
| 762 | +# ɜ [LATIN SMALL LETTER REVERSED OPEN E] |
| 763 | +"\u025C" => "e" |
| 764 | + |
| 765 | +# ɝ [LATIN SMALL LETTER REVERSED OPEN E WITH HOOK] |
| 766 | +"\u025D" => "e" |
| 767 | + |
| 768 | +# ɞ [LATIN SMALL LETTER CLOSED REVERSED OPEN E] |
| 769 | +"\u025E" => "e" |
| 770 | + |
| 771 | +# ʚ [LATIN SMALL LETTER CLOSED OPEN E] |
| 772 | +"\u029A" => "e" |
| 773 | + |
| 774 | +# ᴈ [LATIN SMALL LETTER TURNED OPEN E] |
| 775 | +"\u1D08" => "e" |
| 776 | + |
| 777 | +# ᶒ [LATIN SMALL LETTER E WITH RETROFLEX HOOK] |
| 778 | +"\u1D92" => "e" |
| 779 | + |
| 780 | +# ᶓ [LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK] |
| 781 | +"\u1D93" => "e" |
| 782 | + |
| 783 | +# ᶔ [LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK] |
| 784 | +"\u1D94" => "e" |
| 785 | + |
| 786 | +# ḕ [LATIN SMALL LETTER E WITH MACRON AND GRAVE] |
| 787 | +"\u1E15" => "e" |
| 788 | + |
| 789 | +# ḗ [LATIN SMALL LETTER E WITH MACRON AND ACUTE] |
| 790 | +"\u1E17" => "e" |
| 791 | + |
| 792 | +# ḙ [LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW] |
| 793 | +"\u1E19" => "e" |
| 794 | + |
| 795 | +# ḛ [LATIN SMALL LETTER E WITH TILDE BELOW] |
| 796 | +"\u1E1B" => "e" |
| 797 | + |
| 798 | +# ḝ [LATIN SMALL LETTER E WITH CEDILLA AND BREVE] |
| 799 | +"\u1E1D" => "e" |
| 800 | + |
| 801 | +# ẹ [LATIN SMALL LETTER E WITH DOT BELOW] |
| 802 | +"\u1EB9" => "e" |
| 803 | + |
| 804 | +# ẻ [LATIN SMALL LETTER E WITH HOOK ABOVE] |
| 805 | +"\u1EBB" => "e" |
| 806 | + |
| 807 | +# ẽ [LATIN SMALL LETTER E WITH TILDE] |
| 808 | +"\u1EBD" => "e" |
| 809 | + |
| 810 | +# ế [LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE] |
| 811 | +"\u1EBF" => "e" |
| 812 | + |
| 813 | +# ề [LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE] |
| 814 | +"\u1EC1" => "e" |
| 815 | + |
| 816 | +# ể [LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE] |
| 817 | +"\u1EC3" => "e" |
| 818 | + |
| 819 | +# ễ [LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE] |
| 820 | +"\u1EC5" => "e" |
| 821 | + |
| 822 | +# ệ [LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW] |
| 823 | +"\u1EC7" => "e" |
| 824 | + |
| 825 | +# ₑ [LATIN SUBSCRIPT SMALL LETTER E] |
| 826 | +"\u2091" => "e" |
| 827 | + |
| 828 | +# ⓔ [CIRCLED LATIN SMALL LETTER E] |
| 829 | +"\u24D4" => "e" |
| 830 | + |
| 831 | +# ⱸ [LATIN SMALL LETTER E WITH NOTCH] |
| 832 | +"\u2C78" => "e" |
| 833 | + |
| 834 | +# e [FULLWIDTH LATIN SMALL LETTER E] |
| 835 | +"\uFF45" => "e" |
| 836 | + |
| 837 | +# ⒠ [PARENTHESIZED LATIN SMALL LETTER E] |
| 838 | +"\u24A0" => "(e)" |
| 839 | + |
| 840 | +# Ƒ [LATIN CAPITAL LETTER F WITH HOOK] |
| 841 | +"\u0191" => "F" |
| 842 | + |
| 843 | +# Ḟ [LATIN CAPITAL LETTER F WITH DOT ABOVE] |
| 844 | +"\u1E1E" => "F" |
| 845 | + |
| 846 | +# Ⓕ [CIRCLED LATIN CAPITAL LETTER F] |
| 847 | +"\u24BB" => "F" |
| 848 | + |
| 849 | +# ꜰ [LATIN LETTER SMALL CAPITAL F] |
| 850 | +"\uA730" => "F" |
| 851 | + |
| 852 | +# Ꝼ [LATIN CAPITAL LETTER INSULAR F] |
| 853 | +"\uA77B" => "F" |
| 854 | + |
| 855 | +# ꟻ [LATIN EPIGRAPHIC LETTER REVERSED F] |
| 856 | +"\uA7FB" => "F" |
| 857 | + |
| 858 | +# F [FULLWIDTH LATIN CAPITAL LETTER F] |
| 859 | +"\uFF26" => "F" |
| 860 | + |
| 861 | +# ƒ [LATIN SMALL LETTER F WITH HOOK] |
| 862 | +"\u0192" => "f" |
| 863 | + |
| 864 | +# ᵮ [LATIN SMALL LETTER F WITH MIDDLE TILDE] |
| 865 | +"\u1D6E" => "f" |
| 866 | + |
| 867 | +# ᶂ [LATIN SMALL LETTER F WITH PALATAL HOOK] |
| 868 | +"\u1D82" => "f" |
| 869 | + |
| 870 | +# ḟ [LATIN SMALL LETTER F WITH DOT ABOVE] |
| 871 | +"\u1E1F" => "f" |
| 872 | + |
| 873 | +# ẛ [LATIN SMALL LETTER LONG S WITH DOT ABOVE] |
| 874 | +"\u1E9B" => "f" |
| 875 | + |
| 876 | +# ⓕ [CIRCLED LATIN SMALL LETTER F] |
| 877 | +"\u24D5" => "f" |
| 878 | + |
| 879 | +# ꝼ [LATIN SMALL LETTER INSULAR F] |
| 880 | +"\uA77C" => "f" |
| 881 | + |
| 882 | +# f [FULLWIDTH LATIN SMALL LETTER F] |
| 883 | +"\uFF46" => "f" |
| 884 | + |
| 885 | +# ⒡ [PARENTHESIZED LATIN SMALL LETTER F] |
| 886 | +"\u24A1" => "(f)" |
| 887 | + |
| 888 | +# ff [LATIN SMALL LIGATURE FF] |
| 889 | +"\uFB00" => "ff" |
| 890 | + |
| 891 | +# ffi [LATIN SMALL LIGATURE FFI] |
| 892 | +"\uFB03" => "ffi" |
| 893 | + |
| 894 | +# ffl [LATIN SMALL LIGATURE FFL] |
| 895 | +"\uFB04" => "ffl" |
| 896 | + |
| 897 | +# fi [LATIN SMALL LIGATURE FI] |
| 898 | +"\uFB01" => "fi" |
| 899 | + |
| 900 | +# fl [LATIN SMALL LIGATURE FL] |
| 901 | +"\uFB02" => "fl" |
| 902 | + |
| 903 | +# Ĝ [LATIN CAPITAL LETTER G WITH CIRCUMFLEX] |
| 904 | +"\u011C" => "G" |
| 905 | + |
| 906 | +# Ğ [LATIN CAPITAL LETTER G WITH BREVE] |
| 907 | +"\u011E" => "G" |
| 908 | + |
| 909 | +# Ġ [LATIN CAPITAL LETTER G WITH DOT ABOVE] |
| 910 | +"\u0120" => "G" |
| 911 | + |
| 912 | +# Ģ [LATIN CAPITAL LETTER G WITH CEDILLA] |
| 913 | +"\u0122" => "G" |
| 914 | + |
| 915 | +# Ɠ [LATIN CAPITAL LETTER G WITH HOOK] |
| 916 | +"\u0193" => "G" |
| 917 | + |
| 918 | +# Ǥ [LATIN CAPITAL LETTER G WITH STROKE] |
| 919 | +"\u01E4" => "G" |
| 920 | + |
| 921 | +# ǥ [LATIN SMALL LETTER G WITH STROKE] |
| 922 | +"\u01E5" => "G" |
| 923 | + |
| 924 | +# Ǧ [LATIN CAPITAL LETTER G WITH CARON] |
| 925 | +"\u01E6" => "G" |
| 926 | + |
| 927 | +# ǧ [LATIN SMALL LETTER G WITH CARON] |
| 928 | +"\u01E7" => "G" |
| 929 | + |
| 930 | +# Ǵ [LATIN CAPITAL LETTER G WITH ACUTE] |
| 931 | +"\u01F4" => "G" |
| 932 | + |
| 933 | +# ɢ [LATIN LETTER SMALL CAPITAL G] |
| 934 | +"\u0262" => "G" |
| 935 | + |
| 936 | +# ʛ [LATIN LETTER SMALL CAPITAL G WITH HOOK] |
| 937 | +"\u029B" => "G" |
| 938 | + |
| 939 | +# Ḡ [LATIN CAPITAL LETTER G WITH MACRON] |
| 940 | +"\u1E20" => "G" |
| 941 | + |
| 942 | +# Ⓖ [CIRCLED LATIN CAPITAL LETTER G] |
| 943 | +"\u24BC" => "G" |
| 944 | + |
| 945 | +# Ᵹ [LATIN CAPITAL LETTER INSULAR G] |
| 946 | +"\uA77D" => "G" |
| 947 | + |
| 948 | +# Ꝿ [LATIN CAPITAL LETTER TURNED INSULAR G] |
| 949 | +"\uA77E" => "G" |
| 950 | + |
| 951 | +# G [FULLWIDTH LATIN CAPITAL LETTER G] |
| 952 | +"\uFF27" => "G" |
| 953 | + |
| 954 | +# ĝ [LATIN SMALL LETTER G WITH CIRCUMFLEX] |
| 955 | +"\u011D" => "g" |
| 956 | + |
| 957 | +# ğ [LATIN SMALL LETTER G WITH BREVE] |
| 958 | +"\u011F" => "g" |
| 959 | + |
| 960 | +# ġ [LATIN SMALL LETTER G WITH DOT ABOVE] |
| 961 | +"\u0121" => "g" |
| 962 | + |
| 963 | +# ģ [LATIN SMALL LETTER G WITH CEDILLA] |
| 964 | +"\u0123" => "g" |
| 965 | + |
| 966 | +# ǵ [LATIN SMALL LETTER G WITH ACUTE] |
| 967 | +"\u01F5" => "g" |
| 968 | + |
| 969 | +# ɠ [LATIN SMALL LETTER G WITH HOOK] |
| 970 | +"\u0260" => "g" |
| 971 | + |
| 972 | +# ɡ [LATIN SMALL LETTER SCRIPT G] |
| 973 | +"\u0261" => "g" |
| 974 | + |
| 975 | +# ᵷ [LATIN SMALL LETTER TURNED G] |
| 976 | +"\u1D77" => "g" |
| 977 | + |
| 978 | +# ᵹ [LATIN SMALL LETTER INSULAR G] |
| 979 | +"\u1D79" => "g" |
| 980 | + |
| 981 | +# ᶃ [LATIN SMALL LETTER G WITH PALATAL HOOK] |
| 982 | +"\u1D83" => "g" |
| 983 | + |
| 984 | +# ḡ [LATIN SMALL LETTER G WITH MACRON] |
| 985 | +"\u1E21" => "g" |
| 986 | + |
| 987 | +# ⓖ [CIRCLED LATIN SMALL LETTER G] |
| 988 | +"\u24D6" => "g" |
| 989 | + |
| 990 | +# ꝿ [LATIN SMALL LETTER TURNED INSULAR G] |
| 991 | +"\uA77F" => "g" |
| 992 | + |
| 993 | +# g [FULLWIDTH LATIN SMALL LETTER G] |
| 994 | +"\uFF47" => "g" |
| 995 | + |
| 996 | +# ⒢ [PARENTHESIZED LATIN SMALL LETTER G] |
| 997 | +"\u24A2" => "(g)" |
| 998 | + |
| 999 | +# Ĥ [LATIN CAPITAL LETTER H WITH CIRCUMFLEX] |
| 1000 | +"\u0124" => "H" |
| 1001 | + |
| 1002 | +# Ħ [LATIN CAPITAL LETTER H WITH STROKE] |
| 1003 | +"\u0126" => "H" |
| 1004 | + |
| 1005 | +# Ȟ [LATIN CAPITAL LETTER H WITH CARON] |
| 1006 | +"\u021E" => "H" |
| 1007 | + |
| 1008 | +# ʜ [LATIN LETTER SMALL CAPITAL H] |
| 1009 | +"\u029C" => "H" |
| 1010 | + |
| 1011 | +# Ḣ [LATIN CAPITAL LETTER H WITH DOT ABOVE] |
| 1012 | +"\u1E22" => "H" |
| 1013 | + |
| 1014 | +# Ḥ [LATIN CAPITAL LETTER H WITH DOT BELOW] |
| 1015 | +"\u1E24" => "H" |
| 1016 | + |
| 1017 | +# Ḧ [LATIN CAPITAL LETTER H WITH DIAERESIS] |
| 1018 | +"\u1E26" => "H" |
| 1019 | + |
| 1020 | +# Ḩ [LATIN CAPITAL LETTER H WITH CEDILLA] |
| 1021 | +"\u1E28" => "H" |
| 1022 | + |
| 1023 | +# Ḫ [LATIN CAPITAL LETTER H WITH BREVE BELOW] |
| 1024 | +"\u1E2A" => "H" |
| 1025 | + |
| 1026 | +# Ⓗ [CIRCLED LATIN CAPITAL LETTER H] |
| 1027 | +"\u24BD" => "H" |
| 1028 | + |
| 1029 | +# Ⱨ [LATIN CAPITAL LETTER H WITH DESCENDER] |
| 1030 | +"\u2C67" => "H" |
| 1031 | + |
| 1032 | +# Ⱶ [LATIN CAPITAL LETTER HALF H] |
| 1033 | +"\u2C75" => "H" |
| 1034 | + |
| 1035 | +# H [FULLWIDTH LATIN CAPITAL LETTER H] |
| 1036 | +"\uFF28" => "H" |
| 1037 | + |
| 1038 | +# ĥ [LATIN SMALL LETTER H WITH CIRCUMFLEX] |
| 1039 | +"\u0125" => "h" |
| 1040 | + |
| 1041 | +# ħ [LATIN SMALL LETTER H WITH STROKE] |
| 1042 | +"\u0127" => "h" |
| 1043 | + |
| 1044 | +# ȟ [LATIN SMALL LETTER H WITH CARON] |
| 1045 | +"\u021F" => "h" |
| 1046 | + |
| 1047 | +# ɥ [LATIN SMALL LETTER TURNED H] |
| 1048 | +"\u0265" => "h" |
| 1049 | + |
| 1050 | +# ɦ [LATIN SMALL LETTER H WITH HOOK] |
| 1051 | +"\u0266" => "h" |
| 1052 | + |
| 1053 | +# ʮ [LATIN SMALL LETTER TURNED H WITH FISHHOOK] |
| 1054 | +"\u02AE" => "h" |
| 1055 | + |
| 1056 | +# ʯ [LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL] |
| 1057 | +"\u02AF" => "h" |
| 1058 | + |
| 1059 | +# ḣ [LATIN SMALL LETTER H WITH DOT ABOVE] |
| 1060 | +"\u1E23" => "h" |
| 1061 | + |
| 1062 | +# ḥ [LATIN SMALL LETTER H WITH DOT BELOW] |
| 1063 | +"\u1E25" => "h" |
| 1064 | + |
| 1065 | +# ḧ [LATIN SMALL LETTER H WITH DIAERESIS] |
| 1066 | +"\u1E27" => "h" |
| 1067 | + |
| 1068 | +# ḩ [LATIN SMALL LETTER H WITH CEDILLA] |
| 1069 | +"\u1E29" => "h" |
| 1070 | + |
| 1071 | +# ḫ [LATIN SMALL LETTER H WITH BREVE BELOW] |
| 1072 | +"\u1E2B" => "h" |
| 1073 | + |
| 1074 | +# ẖ [LATIN SMALL LETTER H WITH LINE BELOW] |
| 1075 | +"\u1E96" => "h" |
| 1076 | + |
| 1077 | +# ⓗ [CIRCLED LATIN SMALL LETTER H] |
| 1078 | +"\u24D7" => "h" |
| 1079 | + |
| 1080 | +# ⱨ [LATIN SMALL LETTER H WITH DESCENDER] |
| 1081 | +"\u2C68" => "h" |
| 1082 | + |
| 1083 | +# ⱶ [LATIN SMALL LETTER HALF H] |
| 1084 | +"\u2C76" => "h" |
| 1085 | + |
| 1086 | +# h [FULLWIDTH LATIN SMALL LETTER H] |
| 1087 | +"\uFF48" => "h" |
| 1088 | + |
| 1089 | +# Ƕ http://en.wikipedia.org/wiki/Hwair [LATIN CAPITAL LETTER HWAIR] |
| 1090 | +"\u01F6" => "HV" |
| 1091 | + |
| 1092 | +# ⒣ [PARENTHESIZED LATIN SMALL LETTER H] |
| 1093 | +"\u24A3" => "(h)" |
| 1094 | + |
| 1095 | +# ƕ [LATIN SMALL LETTER HV] |
| 1096 | +"\u0195" => "hv" |
| 1097 | + |
| 1098 | +# Ì [LATIN CAPITAL LETTER I WITH GRAVE] |
| 1099 | +"\u00CC" => "I" |
| 1100 | + |
| 1101 | +# Í [LATIN CAPITAL LETTER I WITH ACUTE] |
| 1102 | +"\u00CD" => "I" |
| 1103 | + |
| 1104 | +# Î [LATIN CAPITAL LETTER I WITH CIRCUMFLEX] |
| 1105 | +"\u00CE" => "I" |
| 1106 | + |
| 1107 | +# Ï [LATIN CAPITAL LETTER I WITH DIAERESIS] |
| 1108 | +"\u00CF" => "I" |
| 1109 | + |
| 1110 | +# Ĩ [LATIN CAPITAL LETTER I WITH TILDE] |
| 1111 | +"\u0128" => "I" |
| 1112 | + |
| 1113 | +# Ī [LATIN CAPITAL LETTER I WITH MACRON] |
| 1114 | +"\u012A" => "I" |
| 1115 | + |
| 1116 | +# Ĭ [LATIN CAPITAL LETTER I WITH BREVE] |
| 1117 | +"\u012C" => "I" |
| 1118 | + |
| 1119 | +# Į [LATIN CAPITAL LETTER I WITH OGONEK] |
| 1120 | +"\u012E" => "I" |
| 1121 | + |
| 1122 | +# İ [LATIN CAPITAL LETTER I WITH DOT ABOVE] |
| 1123 | +"\u0130" => "I" |
| 1124 | + |
| 1125 | +# Ɩ [LATIN CAPITAL LETTER IOTA] |
| 1126 | +"\u0196" => "I" |
| 1127 | + |
| 1128 | +# Ɨ [LATIN CAPITAL LETTER I WITH STROKE] |
| 1129 | +"\u0197" => "I" |
| 1130 | + |
| 1131 | +# Ǐ [LATIN CAPITAL LETTER I WITH CARON] |
| 1132 | +"\u01CF" => "I" |
| 1133 | + |
| 1134 | +# Ȉ [LATIN CAPITAL LETTER I WITH DOUBLE GRAVE] |
| 1135 | +"\u0208" => "I" |
| 1136 | + |
| 1137 | +# Ȋ [LATIN CAPITAL LETTER I WITH INVERTED BREVE] |
| 1138 | +"\u020A" => "I" |
| 1139 | + |
| 1140 | +# ɪ [LATIN LETTER SMALL CAPITAL I] |
| 1141 | +"\u026A" => "I" |
| 1142 | + |
| 1143 | +# ᵻ [LATIN SMALL CAPITAL LETTER I WITH STROKE] |
| 1144 | +"\u1D7B" => "I" |
| 1145 | + |
| 1146 | +# Ḭ [LATIN CAPITAL LETTER I WITH TILDE BELOW] |
| 1147 | +"\u1E2C" => "I" |
| 1148 | + |
| 1149 | +# Ḯ [LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE] |
| 1150 | +"\u1E2E" => "I" |
| 1151 | + |
| 1152 | +# Ỉ [LATIN CAPITAL LETTER I WITH HOOK ABOVE] |
| 1153 | +"\u1EC8" => "I" |
| 1154 | + |
| 1155 | +# Ị [LATIN CAPITAL LETTER I WITH DOT BELOW] |
| 1156 | +"\u1ECA" => "I" |
| 1157 | + |
| 1158 | +# Ⓘ [CIRCLED LATIN CAPITAL LETTER I] |
| 1159 | +"\u24BE" => "I" |
| 1160 | + |
| 1161 | +# ꟾ [LATIN EPIGRAPHIC LETTER I LONGA] |
| 1162 | +"\uA7FE" => "I" |
| 1163 | + |
| 1164 | +# I [FULLWIDTH LATIN CAPITAL LETTER I] |
| 1165 | +"\uFF29" => "I" |
| 1166 | + |
| 1167 | +# ì [LATIN SMALL LETTER I WITH GRAVE] |
| 1168 | +"\u00EC" => "i" |
| 1169 | + |
| 1170 | +# í [LATIN SMALL LETTER I WITH ACUTE] |
| 1171 | +"\u00ED" => "i" |
| 1172 | + |
| 1173 | +# î [LATIN SMALL LETTER I WITH CIRCUMFLEX] |
| 1174 | +"\u00EE" => "i" |
| 1175 | + |
| 1176 | +# ï [LATIN SMALL LETTER I WITH DIAERESIS] |
| 1177 | +"\u00EF" => "i" |
| 1178 | + |
| 1179 | +# ĩ [LATIN SMALL LETTER I WITH TILDE] |
| 1180 | +"\u0129" => "i" |
| 1181 | + |
| 1182 | +# ī [LATIN SMALL LETTER I WITH MACRON] |
| 1183 | +"\u012B" => "i" |
| 1184 | + |
| 1185 | +# ĭ [LATIN SMALL LETTER I WITH BREVE] |
| 1186 | +"\u012D" => "i" |
| 1187 | + |
| 1188 | +# į [LATIN SMALL LETTER I WITH OGONEK] |
| 1189 | +"\u012F" => "i" |
| 1190 | + |
| 1191 | +# ı [LATIN SMALL LETTER DOTLESS I] |
| 1192 | +"\u0131" => "i" |
| 1193 | + |
| 1194 | +# ǐ [LATIN SMALL LETTER I WITH CARON] |
| 1195 | +"\u01D0" => "i" |
| 1196 | + |
| 1197 | +# ȉ [LATIN SMALL LETTER I WITH DOUBLE GRAVE] |
| 1198 | +"\u0209" => "i" |
| 1199 | + |
| 1200 | +# ȋ [LATIN SMALL LETTER I WITH INVERTED BREVE] |
| 1201 | +"\u020B" => "i" |
| 1202 | + |
| 1203 | +# ɨ [LATIN SMALL LETTER I WITH STROKE] |
| 1204 | +"\u0268" => "i" |
| 1205 | + |
| 1206 | +# ᴉ [LATIN SMALL LETTER TURNED I] |
| 1207 | +"\u1D09" => "i" |
| 1208 | + |
| 1209 | +# ᵢ [LATIN SUBSCRIPT SMALL LETTER I] |
| 1210 | +"\u1D62" => "i" |
| 1211 | + |
| 1212 | +# ᵼ [LATIN SMALL LETTER IOTA WITH STROKE] |
| 1213 | +"\u1D7C" => "i" |
| 1214 | + |
| 1215 | +# ᶖ [LATIN SMALL LETTER I WITH RETROFLEX HOOK] |
| 1216 | +"\u1D96" => "i" |
| 1217 | + |
| 1218 | +# ḭ [LATIN SMALL LETTER I WITH TILDE BELOW] |
| 1219 | +"\u1E2D" => "i" |
| 1220 | + |
| 1221 | +# ḯ [LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE] |
| 1222 | +"\u1E2F" => "i" |
| 1223 | + |
| 1224 | +# ỉ [LATIN SMALL LETTER I WITH HOOK ABOVE] |
| 1225 | +"\u1EC9" => "i" |
| 1226 | + |
| 1227 | +# ị [LATIN SMALL LETTER I WITH DOT BELOW] |
| 1228 | +"\u1ECB" => "i" |
| 1229 | + |
| 1230 | +# ⁱ [SUPERSCRIPT LATIN SMALL LETTER I] |
| 1231 | +"\u2071" => "i" |
| 1232 | + |
| 1233 | +# ⓘ [CIRCLED LATIN SMALL LETTER I] |
| 1234 | +"\u24D8" => "i" |
| 1235 | + |
| 1236 | +# i [FULLWIDTH LATIN SMALL LETTER I] |
| 1237 | +"\uFF49" => "i" |
| 1238 | + |
| 1239 | +# IJ [LATIN CAPITAL LIGATURE IJ] |
| 1240 | +"\u0132" => "IJ" |
| 1241 | + |
| 1242 | +# ⒤ [PARENTHESIZED LATIN SMALL LETTER I] |
| 1243 | +"\u24A4" => "(i)" |
| 1244 | + |
| 1245 | +# ij [LATIN SMALL LIGATURE IJ] |
| 1246 | +"\u0133" => "ij" |
| 1247 | + |
| 1248 | +# Ĵ [LATIN CAPITAL LETTER J WITH CIRCUMFLEX] |
| 1249 | +"\u0134" => "J" |
| 1250 | + |
| 1251 | +# Ɉ [LATIN CAPITAL LETTER J WITH STROKE] |
| 1252 | +"\u0248" => "J" |
| 1253 | + |
| 1254 | +# ᴊ [LATIN LETTER SMALL CAPITAL J] |
| 1255 | +"\u1D0A" => "J" |
| 1256 | + |
| 1257 | +# Ⓙ [CIRCLED LATIN CAPITAL LETTER J] |
| 1258 | +"\u24BF" => "J" |
| 1259 | + |
| 1260 | +# J [FULLWIDTH LATIN CAPITAL LETTER J] |
| 1261 | +"\uFF2A" => "J" |
| 1262 | + |
| 1263 | +# ĵ [LATIN SMALL LETTER J WITH CIRCUMFLEX] |
| 1264 | +"\u0135" => "j" |
| 1265 | + |
| 1266 | +# ǰ [LATIN SMALL LETTER J WITH CARON] |
| 1267 | +"\u01F0" => "j" |
| 1268 | + |
| 1269 | +# ȷ [LATIN SMALL LETTER DOTLESS J] |
| 1270 | +"\u0237" => "j" |
| 1271 | + |
| 1272 | +# ɉ [LATIN SMALL LETTER J WITH STROKE] |
| 1273 | +"\u0249" => "j" |
| 1274 | + |
| 1275 | +# ɟ [LATIN SMALL LETTER DOTLESS J WITH STROKE] |
| 1276 | +"\u025F" => "j" |
| 1277 | + |
| 1278 | +# ʄ [LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK] |
| 1279 | +"\u0284" => "j" |
| 1280 | + |
| 1281 | +# ʝ [LATIN SMALL LETTER J WITH CROSSED-TAIL] |
| 1282 | +"\u029D" => "j" |
| 1283 | + |
| 1284 | +# ⓙ [CIRCLED LATIN SMALL LETTER J] |
| 1285 | +"\u24D9" => "j" |
| 1286 | + |
| 1287 | +# ⱼ [LATIN SUBSCRIPT SMALL LETTER J] |
| 1288 | +"\u2C7C" => "j" |
| 1289 | + |
| 1290 | +# j [FULLWIDTH LATIN SMALL LETTER J] |
| 1291 | +"\uFF4A" => "j" |
| 1292 | + |
| 1293 | +# ⒥ [PARENTHESIZED LATIN SMALL LETTER J] |
| 1294 | +"\u24A5" => "(j)" |
| 1295 | + |
| 1296 | +# Ķ [LATIN CAPITAL LETTER K WITH CEDILLA] |
| 1297 | +"\u0136" => "K" |
| 1298 | + |
| 1299 | +# Ƙ [LATIN CAPITAL LETTER K WITH HOOK] |
| 1300 | +"\u0198" => "K" |
| 1301 | + |
| 1302 | +# Ǩ [LATIN CAPITAL LETTER K WITH CARON] |
| 1303 | +"\u01E8" => "K" |
| 1304 | + |
| 1305 | +# ᴋ [LATIN LETTER SMALL CAPITAL K] |
| 1306 | +"\u1D0B" => "K" |
| 1307 | + |
| 1308 | +# Ḱ [LATIN CAPITAL LETTER K WITH ACUTE] |
| 1309 | +"\u1E30" => "K" |
| 1310 | + |
| 1311 | +# Ḳ [LATIN CAPITAL LETTER K WITH DOT BELOW] |
| 1312 | +"\u1E32" => "K" |
| 1313 | + |
| 1314 | +# Ḵ [LATIN CAPITAL LETTER K WITH LINE BELOW] |
| 1315 | +"\u1E34" => "K" |
| 1316 | + |
| 1317 | +# Ⓚ [CIRCLED LATIN CAPITAL LETTER K] |
| 1318 | +"\u24C0" => "K" |
| 1319 | + |
| 1320 | +# Ⱪ [LATIN CAPITAL LETTER K WITH DESCENDER] |
| 1321 | +"\u2C69" => "K" |
| 1322 | + |
| 1323 | +# Ꝁ [LATIN CAPITAL LETTER K WITH STROKE] |
| 1324 | +"\uA740" => "K" |
| 1325 | + |
| 1326 | +# Ꝃ [LATIN CAPITAL LETTER K WITH DIAGONAL STROKE] |
| 1327 | +"\uA742" => "K" |
| 1328 | + |
| 1329 | +# Ꝅ [LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE] |
| 1330 | +"\uA744" => "K" |
| 1331 | + |
| 1332 | +# K [FULLWIDTH LATIN CAPITAL LETTER K] |
| 1333 | +"\uFF2B" => "K" |
| 1334 | + |
| 1335 | +# ķ [LATIN SMALL LETTER K WITH CEDILLA] |
| 1336 | +"\u0137" => "k" |
| 1337 | + |
| 1338 | +# ƙ [LATIN SMALL LETTER K WITH HOOK] |
| 1339 | +"\u0199" => "k" |
| 1340 | + |
| 1341 | +# ǩ [LATIN SMALL LETTER K WITH CARON] |
| 1342 | +"\u01E9" => "k" |
| 1343 | + |
| 1344 | +# ʞ [LATIN SMALL LETTER TURNED K] |
| 1345 | +"\u029E" => "k" |
| 1346 | + |
| 1347 | +# ᶄ [LATIN SMALL LETTER K WITH PALATAL HOOK] |
| 1348 | +"\u1D84" => "k" |
| 1349 | + |
| 1350 | +# ḱ [LATIN SMALL LETTER K WITH ACUTE] |
| 1351 | +"\u1E31" => "k" |
| 1352 | + |
| 1353 | +# ḳ [LATIN SMALL LETTER K WITH DOT BELOW] |
| 1354 | +"\u1E33" => "k" |
| 1355 | + |
| 1356 | +# ḵ [LATIN SMALL LETTER K WITH LINE BELOW] |
| 1357 | +"\u1E35" => "k" |
| 1358 | + |
| 1359 | +# ⓚ [CIRCLED LATIN SMALL LETTER K] |
| 1360 | +"\u24DA" => "k" |
| 1361 | + |
| 1362 | +# ⱪ [LATIN SMALL LETTER K WITH DESCENDER] |
| 1363 | +"\u2C6A" => "k" |
| 1364 | + |
| 1365 | +# ꝁ [LATIN SMALL LETTER K WITH STROKE] |
| 1366 | +"\uA741" => "k" |
| 1367 | + |
| 1368 | +# ꝃ [LATIN SMALL LETTER K WITH DIAGONAL STROKE] |
| 1369 | +"\uA743" => "k" |
| 1370 | + |
| 1371 | +# ꝅ [LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE] |
| 1372 | +"\uA745" => "k" |
| 1373 | + |
| 1374 | +# k [FULLWIDTH LATIN SMALL LETTER K] |
| 1375 | +"\uFF4B" => "k" |
| 1376 | + |
| 1377 | +# ⒦ [PARENTHESIZED LATIN SMALL LETTER K] |
| 1378 | +"\u24A6" => "(k)" |
| 1379 | + |
| 1380 | +# Ĺ [LATIN CAPITAL LETTER L WITH ACUTE] |
| 1381 | +"\u0139" => "L" |
| 1382 | + |
| 1383 | +# Ļ [LATIN CAPITAL LETTER L WITH CEDILLA] |
| 1384 | +"\u013B" => "L" |
| 1385 | + |
| 1386 | +# Ľ [LATIN CAPITAL LETTER L WITH CARON] |
| 1387 | +"\u013D" => "L" |
| 1388 | + |
| 1389 | +# Ŀ [LATIN CAPITAL LETTER L WITH MIDDLE DOT] |
| 1390 | +"\u013F" => "L" |
| 1391 | + |
| 1392 | +# Ł [LATIN CAPITAL LETTER L WITH STROKE] |
| 1393 | +"\u0141" => "L" |
| 1394 | + |
| 1395 | +# Ƚ [LATIN CAPITAL LETTER L WITH BAR] |
| 1396 | +"\u023D" => "L" |
| 1397 | + |
| 1398 | +# ʟ [LATIN LETTER SMALL CAPITAL L] |
| 1399 | +"\u029F" => "L" |
| 1400 | + |
| 1401 | +# ᴌ [LATIN LETTER SMALL CAPITAL L WITH STROKE] |
| 1402 | +"\u1D0C" => "L" |
| 1403 | + |
| 1404 | +# Ḷ [LATIN CAPITAL LETTER L WITH DOT BELOW] |
| 1405 | +"\u1E36" => "L" |
| 1406 | + |
| 1407 | +# Ḹ [LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON] |
| 1408 | +"\u1E38" => "L" |
| 1409 | + |
| 1410 | +# Ḻ [LATIN CAPITAL LETTER L WITH LINE BELOW] |
| 1411 | +"\u1E3A" => "L" |
| 1412 | + |
| 1413 | +# Ḽ [LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW] |
| 1414 | +"\u1E3C" => "L" |
| 1415 | + |
| 1416 | +# Ⓛ [CIRCLED LATIN CAPITAL LETTER L] |
| 1417 | +"\u24C1" => "L" |
| 1418 | + |
| 1419 | +# Ⱡ [LATIN CAPITAL LETTER L WITH DOUBLE BAR] |
| 1420 | +"\u2C60" => "L" |
| 1421 | + |
| 1422 | +# Ɫ [LATIN CAPITAL LETTER L WITH MIDDLE TILDE] |
| 1423 | +"\u2C62" => "L" |
| 1424 | + |
| 1425 | +# Ꝇ [LATIN CAPITAL LETTER BROKEN L] |
| 1426 | +"\uA746" => "L" |
| 1427 | + |
| 1428 | +# Ꝉ [LATIN CAPITAL LETTER L WITH HIGH STROKE] |
| 1429 | +"\uA748" => "L" |
| 1430 | + |
| 1431 | +# Ꞁ [LATIN CAPITAL LETTER TURNED L] |
| 1432 | +"\uA780" => "L" |
| 1433 | + |
| 1434 | +# L [FULLWIDTH LATIN CAPITAL LETTER L] |
| 1435 | +"\uFF2C" => "L" |
| 1436 | + |
| 1437 | +# ĺ [LATIN SMALL LETTER L WITH ACUTE] |
| 1438 | +"\u013A" => "l" |
| 1439 | + |
| 1440 | +# ļ [LATIN SMALL LETTER L WITH CEDILLA] |
| 1441 | +"\u013C" => "l" |
| 1442 | + |
| 1443 | +# ľ [LATIN SMALL LETTER L WITH CARON] |
| 1444 | +"\u013E" => "l" |
| 1445 | + |
| 1446 | +# ŀ [LATIN SMALL LETTER L WITH MIDDLE DOT] |
| 1447 | +"\u0140" => "l" |
| 1448 | + |
| 1449 | +# ł [LATIN SMALL LETTER L WITH STROKE] |
| 1450 | +"\u0142" => "l" |
| 1451 | + |
| 1452 | +# ƚ [LATIN SMALL LETTER L WITH BAR] |
| 1453 | +"\u019A" => "l" |
| 1454 | + |
| 1455 | +# ȴ [LATIN SMALL LETTER L WITH CURL] |
| 1456 | +"\u0234" => "l" |
| 1457 | + |
| 1458 | +# ɫ [LATIN SMALL LETTER L WITH MIDDLE TILDE] |
| 1459 | +"\u026B" => "l" |
| 1460 | + |
| 1461 | +# ɬ [LATIN SMALL LETTER L WITH BELT] |
| 1462 | +"\u026C" => "l" |
| 1463 | + |
| 1464 | +# ɭ [LATIN SMALL LETTER L WITH RETROFLEX HOOK] |
| 1465 | +"\u026D" => "l" |
| 1466 | + |
| 1467 | +# ᶅ [LATIN SMALL LETTER L WITH PALATAL HOOK] |
| 1468 | +"\u1D85" => "l" |
| 1469 | + |
| 1470 | +# ḷ [LATIN SMALL LETTER L WITH DOT BELOW] |
| 1471 | +"\u1E37" => "l" |
| 1472 | + |
| 1473 | +# ḹ [LATIN SMALL LETTER L WITH DOT BELOW AND MACRON] |
| 1474 | +"\u1E39" => "l" |
| 1475 | + |
| 1476 | +# ḻ [LATIN SMALL LETTER L WITH LINE BELOW] |
| 1477 | +"\u1E3B" => "l" |
| 1478 | + |
| 1479 | +# ḽ [LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW] |
| 1480 | +"\u1E3D" => "l" |
| 1481 | + |
| 1482 | +# ⓛ [CIRCLED LATIN SMALL LETTER L] |
| 1483 | +"\u24DB" => "l" |
| 1484 | + |
| 1485 | +# ⱡ [LATIN SMALL LETTER L WITH DOUBLE BAR] |
| 1486 | +"\u2C61" => "l" |
| 1487 | + |
| 1488 | +# ꝇ [LATIN SMALL LETTER BROKEN L] |
| 1489 | +"\uA747" => "l" |
| 1490 | + |
| 1491 | +# ꝉ [LATIN SMALL LETTER L WITH HIGH STROKE] |
| 1492 | +"\uA749" => "l" |
| 1493 | + |
| 1494 | +# ꞁ [LATIN SMALL LETTER TURNED L] |
| 1495 | +"\uA781" => "l" |
| 1496 | + |
| 1497 | +# l [FULLWIDTH LATIN SMALL LETTER L] |
| 1498 | +"\uFF4C" => "l" |
| 1499 | + |
| 1500 | +# LJ [LATIN CAPITAL LETTER LJ] |
| 1501 | +"\u01C7" => "LJ" |
| 1502 | + |
| 1503 | +# Ỻ [LATIN CAPITAL LETTER MIDDLE-WELSH LL] |
| 1504 | +"\u1EFA" => "LL" |
| 1505 | + |
| 1506 | +# Lj [LATIN CAPITAL LETTER L WITH SMALL LETTER J] |
| 1507 | +"\u01C8" => "Lj" |
| 1508 | + |
| 1509 | +# ⒧ [PARENTHESIZED LATIN SMALL LETTER L] |
| 1510 | +"\u24A7" => "(l)" |
| 1511 | + |
| 1512 | +# lj [LATIN SMALL LETTER LJ] |
| 1513 | +"\u01C9" => "lj" |
| 1514 | + |
| 1515 | +# ỻ [LATIN SMALL LETTER MIDDLE-WELSH LL] |
| 1516 | +"\u1EFB" => "ll" |
| 1517 | + |
| 1518 | +# ʪ [LATIN SMALL LETTER LS DIGRAPH] |
| 1519 | +"\u02AA" => "ls" |
| 1520 | + |
| 1521 | +# ʫ [LATIN SMALL LETTER LZ DIGRAPH] |
| 1522 | +"\u02AB" => "lz" |
| 1523 | + |
| 1524 | +# Ɯ [LATIN CAPITAL LETTER TURNED M] |
| 1525 | +"\u019C" => "M" |
| 1526 | + |
| 1527 | +# ᴍ [LATIN LETTER SMALL CAPITAL M] |
| 1528 | +"\u1D0D" => "M" |
| 1529 | + |
| 1530 | +# Ḿ [LATIN CAPITAL LETTER M WITH ACUTE] |
| 1531 | +"\u1E3E" => "M" |
| 1532 | + |
| 1533 | +# Ṁ [LATIN CAPITAL LETTER M WITH DOT ABOVE] |
| 1534 | +"\u1E40" => "M" |
| 1535 | + |
| 1536 | +# Ṃ [LATIN CAPITAL LETTER M WITH DOT BELOW] |
| 1537 | +"\u1E42" => "M" |
| 1538 | + |
| 1539 | +# Ⓜ [CIRCLED LATIN CAPITAL LETTER M] |
| 1540 | +"\u24C2" => "M" |
| 1541 | + |
| 1542 | +# Ɱ [LATIN CAPITAL LETTER M WITH HOOK] |
| 1543 | +"\u2C6E" => "M" |
| 1544 | + |
| 1545 | +# ꟽ [LATIN EPIGRAPHIC LETTER INVERTED M] |
| 1546 | +"\uA7FD" => "M" |
| 1547 | + |
| 1548 | +# ꟿ [LATIN EPIGRAPHIC LETTER ARCHAIC M] |
| 1549 | +"\uA7FF" => "M" |
| 1550 | + |
| 1551 | +# M [FULLWIDTH LATIN CAPITAL LETTER M] |
| 1552 | +"\uFF2D" => "M" |
| 1553 | + |
| 1554 | +# ɯ [LATIN SMALL LETTER TURNED M] |
| 1555 | +"\u026F" => "m" |
| 1556 | + |
| 1557 | +# ɰ [LATIN SMALL LETTER TURNED M WITH LONG LEG] |
| 1558 | +"\u0270" => "m" |
| 1559 | + |
| 1560 | +# ɱ [LATIN SMALL LETTER M WITH HOOK] |
| 1561 | +"\u0271" => "m" |
| 1562 | + |
| 1563 | +# ᵯ [LATIN SMALL LETTER M WITH MIDDLE TILDE] |
| 1564 | +"\u1D6F" => "m" |
| 1565 | + |
| 1566 | +# ᶆ [LATIN SMALL LETTER M WITH PALATAL HOOK] |
| 1567 | +"\u1D86" => "m" |
| 1568 | + |
| 1569 | +# ḿ [LATIN SMALL LETTER M WITH ACUTE] |
| 1570 | +"\u1E3F" => "m" |
| 1571 | + |
| 1572 | +# ṁ [LATIN SMALL LETTER M WITH DOT ABOVE] |
| 1573 | +"\u1E41" => "m" |
| 1574 | + |
| 1575 | +# ṃ [LATIN SMALL LETTER M WITH DOT BELOW] |
| 1576 | +"\u1E43" => "m" |
| 1577 | + |
| 1578 | +# ⓜ [CIRCLED LATIN SMALL LETTER M] |
| 1579 | +"\u24DC" => "m" |
| 1580 | + |
| 1581 | +# m [FULLWIDTH LATIN SMALL LETTER M] |
| 1582 | +"\uFF4D" => "m" |
| 1583 | + |
| 1584 | +# ⒨ [PARENTHESIZED LATIN SMALL LETTER M] |
| 1585 | +"\u24A8" => "(m)" |
| 1586 | + |
| 1587 | +# Ñ [LATIN CAPITAL LETTER N WITH TILDE] |
| 1588 | +"\u00D1" => "N" |
| 1589 | + |
| 1590 | +# Ń [LATIN CAPITAL LETTER N WITH ACUTE] |
| 1591 | +"\u0143" => "N" |
| 1592 | + |
| 1593 | +# Ņ [LATIN CAPITAL LETTER N WITH CEDILLA] |
| 1594 | +"\u0145" => "N" |
| 1595 | + |
| 1596 | +# Ň [LATIN CAPITAL LETTER N WITH CARON] |
| 1597 | +"\u0147" => "N" |
| 1598 | + |
| 1599 | +# Ŋ http://en.wikipedia.org/wiki/Eng_(letter) [LATIN CAPITAL LETTER ENG] |
| 1600 | +"\u014A" => "N" |
| 1601 | + |
| 1602 | +# Ɲ [LATIN CAPITAL LETTER N WITH LEFT HOOK] |
| 1603 | +"\u019D" => "N" |
| 1604 | + |
| 1605 | +# Ǹ [LATIN CAPITAL LETTER N WITH GRAVE] |
| 1606 | +"\u01F8" => "N" |
| 1607 | + |
| 1608 | +# Ƞ [LATIN CAPITAL LETTER N WITH LONG RIGHT LEG] |
| 1609 | +"\u0220" => "N" |
| 1610 | + |
| 1611 | +# ɴ [LATIN LETTER SMALL CAPITAL N] |
| 1612 | +"\u0274" => "N" |
| 1613 | + |
| 1614 | +# ᴎ [LATIN LETTER SMALL CAPITAL REVERSED N] |
| 1615 | +"\u1D0E" => "N" |
| 1616 | + |
| 1617 | +# Ṅ [LATIN CAPITAL LETTER N WITH DOT ABOVE] |
| 1618 | +"\u1E44" => "N" |
| 1619 | + |
| 1620 | +# Ṇ [LATIN CAPITAL LETTER N WITH DOT BELOW] |
| 1621 | +"\u1E46" => "N" |
| 1622 | + |
| 1623 | +# Ṉ [LATIN CAPITAL LETTER N WITH LINE BELOW] |
| 1624 | +"\u1E48" => "N" |
| 1625 | + |
| 1626 | +# Ṋ [LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW] |
| 1627 | +"\u1E4A" => "N" |
| 1628 | + |
| 1629 | +# Ⓝ [CIRCLED LATIN CAPITAL LETTER N] |
| 1630 | +"\u24C3" => "N" |
| 1631 | + |
| 1632 | +# N [FULLWIDTH LATIN CAPITAL LETTER N] |
| 1633 | +"\uFF2E" => "N" |
| 1634 | + |
| 1635 | +# ñ [LATIN SMALL LETTER N WITH TILDE] |
| 1636 | +"\u00F1" => "n" |
| 1637 | + |
| 1638 | +# ń [LATIN SMALL LETTER N WITH ACUTE] |
| 1639 | +"\u0144" => "n" |
| 1640 | + |
| 1641 | +# ņ [LATIN SMALL LETTER N WITH CEDILLA] |
| 1642 | +"\u0146" => "n" |
| 1643 | + |
| 1644 | +# ň [LATIN SMALL LETTER N WITH CARON] |
| 1645 | +"\u0148" => "n" |
| 1646 | + |
| 1647 | +# ʼn [LATIN SMALL LETTER N PRECEDED BY APOSTROPHE] |
| 1648 | +"\u0149" => "n" |
| 1649 | + |
| 1650 | +# ŋ http://en.wikipedia.org/wiki/Eng_(letter) [LATIN SMALL LETTER ENG] |
| 1651 | +"\u014B" => "n" |
| 1652 | + |
| 1653 | +# ƞ [LATIN SMALL LETTER N WITH LONG RIGHT LEG] |
| 1654 | +"\u019E" => "n" |
| 1655 | + |
| 1656 | +# ǹ [LATIN SMALL LETTER N WITH GRAVE] |
| 1657 | +"\u01F9" => "n" |
| 1658 | + |
| 1659 | +# ȵ [LATIN SMALL LETTER N WITH CURL] |
| 1660 | +"\u0235" => "n" |
| 1661 | + |
| 1662 | +# ɲ [LATIN SMALL LETTER N WITH LEFT HOOK] |
| 1663 | +"\u0272" => "n" |
| 1664 | + |
| 1665 | +# ɳ [LATIN SMALL LETTER N WITH RETROFLEX HOOK] |
| 1666 | +"\u0273" => "n" |
| 1667 | + |
| 1668 | +# ᵰ [LATIN SMALL LETTER N WITH MIDDLE TILDE] |
| 1669 | +"\u1D70" => "n" |
| 1670 | + |
| 1671 | +# ᶇ [LATIN SMALL LETTER N WITH PALATAL HOOK] |
| 1672 | +"\u1D87" => "n" |
| 1673 | + |
| 1674 | +# ṅ [LATIN SMALL LETTER N WITH DOT ABOVE] |
| 1675 | +"\u1E45" => "n" |
| 1676 | + |
| 1677 | +# ṇ [LATIN SMALL LETTER N WITH DOT BELOW] |
| 1678 | +"\u1E47" => "n" |
| 1679 | + |
| 1680 | +# ṉ [LATIN SMALL LETTER N WITH LINE BELOW] |
| 1681 | +"\u1E49" => "n" |
| 1682 | + |
| 1683 | +# ṋ [LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW] |
| 1684 | +"\u1E4B" => "n" |
| 1685 | + |
| 1686 | +# ⁿ [SUPERSCRIPT LATIN SMALL LETTER N] |
| 1687 | +"\u207F" => "n" |
| 1688 | + |
| 1689 | +# ⓝ [CIRCLED LATIN SMALL LETTER N] |
| 1690 | +"\u24DD" => "n" |
| 1691 | + |
| 1692 | +# n [FULLWIDTH LATIN SMALL LETTER N] |
| 1693 | +"\uFF4E" => "n" |
| 1694 | + |
| 1695 | +# NJ [LATIN CAPITAL LETTER NJ] |
| 1696 | +"\u01CA" => "NJ" |
| 1697 | + |
| 1698 | +# Nj [LATIN CAPITAL LETTER N WITH SMALL LETTER J] |
| 1699 | +"\u01CB" => "Nj" |
| 1700 | + |
| 1701 | +# ⒩ [PARENTHESIZED LATIN SMALL LETTER N] |
| 1702 | +"\u24A9" => "(n)" |
| 1703 | + |
| 1704 | +# nj [LATIN SMALL LETTER NJ] |
| 1705 | +"\u01CC" => "nj" |
| 1706 | + |
| 1707 | +# Ò [LATIN CAPITAL LETTER O WITH GRAVE] |
| 1708 | +"\u00D2" => "O" |
| 1709 | + |
| 1710 | +# Ó [LATIN CAPITAL LETTER O WITH ACUTE] |
| 1711 | +"\u00D3" => "O" |
| 1712 | + |
| 1713 | +# Ô [LATIN CAPITAL LETTER O WITH CIRCUMFLEX] |
| 1714 | +"\u00D4" => "O" |
| 1715 | + |
| 1716 | +# Õ [LATIN CAPITAL LETTER O WITH TILDE] |
| 1717 | +"\u00D5" => "O" |
| 1718 | + |
| 1719 | +# Ö [LATIN CAPITAL LETTER O WITH DIAERESIS] |
| 1720 | +"\u00D6" => "O" |
| 1721 | + |
| 1722 | +# Ø [LATIN CAPITAL LETTER O WITH STROKE] |
| 1723 | +"\u00D8" => "O" |
| 1724 | + |
| 1725 | +# Ō [LATIN CAPITAL LETTER O WITH MACRON] |
| 1726 | +"\u014C" => "O" |
| 1727 | + |
| 1728 | +# Ŏ [LATIN CAPITAL LETTER O WITH BREVE] |
| 1729 | +"\u014E" => "O" |
| 1730 | + |
| 1731 | +# Ő [LATIN CAPITAL LETTER O WITH DOUBLE ACUTE] |
| 1732 | +"\u0150" => "O" |
| 1733 | + |
| 1734 | +# Ɔ [LATIN CAPITAL LETTER OPEN O] |
| 1735 | +"\u0186" => "O" |
| 1736 | + |
| 1737 | +# Ɵ [LATIN CAPITAL LETTER O WITH MIDDLE TILDE] |
| 1738 | +"\u019F" => "O" |
| 1739 | + |
| 1740 | +# Ơ [LATIN CAPITAL LETTER O WITH HORN] |
| 1741 | +"\u01A0" => "O" |
| 1742 | + |
| 1743 | +# Ǒ [LATIN CAPITAL LETTER O WITH CARON] |
| 1744 | +"\u01D1" => "O" |
| 1745 | + |
| 1746 | +# Ǫ [LATIN CAPITAL LETTER O WITH OGONEK] |
| 1747 | +"\u01EA" => "O" |
| 1748 | + |
| 1749 | +# Ǭ [LATIN CAPITAL LETTER O WITH OGONEK AND MACRON] |
| 1750 | +"\u01EC" => "O" |
| 1751 | + |
| 1752 | +# Ǿ [LATIN CAPITAL LETTER O WITH STROKE AND ACUTE] |
| 1753 | +"\u01FE" => "O" |
| 1754 | + |
| 1755 | +# Ȍ [LATIN CAPITAL LETTER O WITH DOUBLE GRAVE] |
| 1756 | +"\u020C" => "O" |
| 1757 | + |
| 1758 | +# Ȏ [LATIN CAPITAL LETTER O WITH INVERTED BREVE] |
| 1759 | +"\u020E" => "O" |
| 1760 | + |
| 1761 | +# Ȫ [LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON] |
| 1762 | +"\u022A" => "O" |
| 1763 | + |
| 1764 | +# Ȭ [LATIN CAPITAL LETTER O WITH TILDE AND MACRON] |
| 1765 | +"\u022C" => "O" |
| 1766 | + |
| 1767 | +# Ȯ [LATIN CAPITAL LETTER O WITH DOT ABOVE] |
| 1768 | +"\u022E" => "O" |
| 1769 | + |
| 1770 | +# Ȱ [LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON] |
| 1771 | +"\u0230" => "O" |
| 1772 | + |
| 1773 | +# ᴏ [LATIN LETTER SMALL CAPITAL O] |
| 1774 | +"\u1D0F" => "O" |
| 1775 | + |
| 1776 | +# ᴐ [LATIN LETTER SMALL CAPITAL OPEN O] |
| 1777 | +"\u1D10" => "O" |
| 1778 | + |
| 1779 | +# Ṍ [LATIN CAPITAL LETTER O WITH TILDE AND ACUTE] |
| 1780 | +"\u1E4C" => "O" |
| 1781 | + |
| 1782 | +# Ṏ [LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS] |
| 1783 | +"\u1E4E" => "O" |
| 1784 | + |
| 1785 | +# Ṑ [LATIN CAPITAL LETTER O WITH MACRON AND GRAVE] |
| 1786 | +"\u1E50" => "O" |
| 1787 | + |
| 1788 | +# Ṓ [LATIN CAPITAL LETTER O WITH MACRON AND ACUTE] |
| 1789 | +"\u1E52" => "O" |
| 1790 | + |
| 1791 | +# Ọ [LATIN CAPITAL LETTER O WITH DOT BELOW] |
| 1792 | +"\u1ECC" => "O" |
| 1793 | + |
| 1794 | +# Ỏ [LATIN CAPITAL LETTER O WITH HOOK ABOVE] |
| 1795 | +"\u1ECE" => "O" |
| 1796 | + |
| 1797 | +# Ố [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE] |
| 1798 | +"\u1ED0" => "O" |
| 1799 | + |
| 1800 | +# Ồ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE] |
| 1801 | +"\u1ED2" => "O" |
| 1802 | + |
| 1803 | +# Ổ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE] |
| 1804 | +"\u1ED4" => "O" |
| 1805 | + |
| 1806 | +# Ỗ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE] |
| 1807 | +"\u1ED6" => "O" |
| 1808 | + |
| 1809 | +# Ộ [LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW] |
| 1810 | +"\u1ED8" => "O" |
| 1811 | + |
| 1812 | +# Ớ [LATIN CAPITAL LETTER O WITH HORN AND ACUTE] |
| 1813 | +"\u1EDA" => "O" |
| 1814 | + |
| 1815 | +# Ờ [LATIN CAPITAL LETTER O WITH HORN AND GRAVE] |
| 1816 | +"\u1EDC" => "O" |
| 1817 | + |
| 1818 | +# Ở [LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE] |
| 1819 | +"\u1EDE" => "O" |
| 1820 | + |
| 1821 | +# Ỡ [LATIN CAPITAL LETTER O WITH HORN AND TILDE] |
| 1822 | +"\u1EE0" => "O" |
| 1823 | + |
| 1824 | +# Ợ [LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW] |
| 1825 | +"\u1EE2" => "O" |
| 1826 | + |
| 1827 | +# Ⓞ [CIRCLED LATIN CAPITAL LETTER O] |
| 1828 | +"\u24C4" => "O" |
| 1829 | + |
| 1830 | +# Ꝋ [LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY] |
| 1831 | +"\uA74A" => "O" |
| 1832 | + |
| 1833 | +# Ꝍ [LATIN CAPITAL LETTER O WITH LOOP] |
| 1834 | +"\uA74C" => "O" |
| 1835 | + |
| 1836 | +# O [FULLWIDTH LATIN CAPITAL LETTER O] |
| 1837 | +"\uFF2F" => "O" |
| 1838 | + |
| 1839 | +# ò [LATIN SMALL LETTER O WITH GRAVE] |
| 1840 | +"\u00F2" => "o" |
| 1841 | + |
| 1842 | +# ó [LATIN SMALL LETTER O WITH ACUTE] |
| 1843 | +"\u00F3" => "o" |
| 1844 | + |
| 1845 | +# ô [LATIN SMALL LETTER O WITH CIRCUMFLEX] |
| 1846 | +"\u00F4" => "o" |
| 1847 | + |
| 1848 | +# õ [LATIN SMALL LETTER O WITH TILDE] |
| 1849 | +"\u00F5" => "o" |
| 1850 | + |
| 1851 | +# ö [LATIN SMALL LETTER O WITH DIAERESIS] |
| 1852 | +"\u00F6" => "o" |
| 1853 | + |
| 1854 | +# ø [LATIN SMALL LETTER O WITH STROKE] |
| 1855 | +"\u00F8" => "o" |
| 1856 | + |
| 1857 | +# ō [LATIN SMALL LETTER O WITH MACRON] |
| 1858 | +"\u014D" => "o" |
| 1859 | + |
| 1860 | +# ŏ [LATIN SMALL LETTER O WITH BREVE] |
| 1861 | +"\u014F" => "o" |
| 1862 | + |
| 1863 | +# ő [LATIN SMALL LETTER O WITH DOUBLE ACUTE] |
| 1864 | +"\u0151" => "o" |
| 1865 | + |
| 1866 | +# ơ [LATIN SMALL LETTER O WITH HORN] |
| 1867 | +"\u01A1" => "o" |
| 1868 | + |
| 1869 | +# ǒ [LATIN SMALL LETTER O WITH CARON] |
| 1870 | +"\u01D2" => "o" |
| 1871 | + |
| 1872 | +# ǫ [LATIN SMALL LETTER O WITH OGONEK] |
| 1873 | +"\u01EB" => "o" |
| 1874 | + |
| 1875 | +# ǭ [LATIN SMALL LETTER O WITH OGONEK AND MACRON] |
| 1876 | +"\u01ED" => "o" |
| 1877 | + |
| 1878 | +# ǿ [LATIN SMALL LETTER O WITH STROKE AND ACUTE] |
| 1879 | +"\u01FF" => "o" |
| 1880 | + |
| 1881 | +# ȍ [LATIN SMALL LETTER O WITH DOUBLE GRAVE] |
| 1882 | +"\u020D" => "o" |
| 1883 | + |
| 1884 | +# ȏ [LATIN SMALL LETTER O WITH INVERTED BREVE] |
| 1885 | +"\u020F" => "o" |
| 1886 | + |
| 1887 | +# ȫ [LATIN SMALL LETTER O WITH DIAERESIS AND MACRON] |
| 1888 | +"\u022B" => "o" |
| 1889 | + |
| 1890 | +# ȭ [LATIN SMALL LETTER O WITH TILDE AND MACRON] |
| 1891 | +"\u022D" => "o" |
| 1892 | + |
| 1893 | +# ȯ [LATIN SMALL LETTER O WITH DOT ABOVE] |
| 1894 | +"\u022F" => "o" |
| 1895 | + |
| 1896 | +# ȱ [LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON] |
| 1897 | +"\u0231" => "o" |
| 1898 | + |
| 1899 | +# ɔ [LATIN SMALL LETTER OPEN O] |
| 1900 | +"\u0254" => "o" |
| 1901 | + |
| 1902 | +# ɵ [LATIN SMALL LETTER BARRED O] |
| 1903 | +"\u0275" => "o" |
| 1904 | + |
| 1905 | +# ᴖ [LATIN SMALL LETTER TOP HALF O] |
| 1906 | +"\u1D16" => "o" |
| 1907 | + |
| 1908 | +# ᴗ [LATIN SMALL LETTER BOTTOM HALF O] |
| 1909 | +"\u1D17" => "o" |
| 1910 | + |
| 1911 | +# ᶗ [LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK] |
| 1912 | +"\u1D97" => "o" |
| 1913 | + |
| 1914 | +# ṍ [LATIN SMALL LETTER O WITH TILDE AND ACUTE] |
| 1915 | +"\u1E4D" => "o" |
| 1916 | + |
| 1917 | +# ṏ [LATIN SMALL LETTER O WITH TILDE AND DIAERESIS] |
| 1918 | +"\u1E4F" => "o" |
| 1919 | + |
| 1920 | +# ṑ [LATIN SMALL LETTER O WITH MACRON AND GRAVE] |
| 1921 | +"\u1E51" => "o" |
| 1922 | + |
| 1923 | +# ṓ [LATIN SMALL LETTER O WITH MACRON AND ACUTE] |
| 1924 | +"\u1E53" => "o" |
| 1925 | + |
| 1926 | +# ọ [LATIN SMALL LETTER O WITH DOT BELOW] |
| 1927 | +"\u1ECD" => "o" |
| 1928 | + |
| 1929 | +# ỏ [LATIN SMALL LETTER O WITH HOOK ABOVE] |
| 1930 | +"\u1ECF" => "o" |
| 1931 | + |
| 1932 | +# ố [LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE] |
| 1933 | +"\u1ED1" => "o" |
| 1934 | + |
| 1935 | +# ồ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE] |
| 1936 | +"\u1ED3" => "o" |
| 1937 | + |
| 1938 | +# ổ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE] |
| 1939 | +"\u1ED5" => "o" |
| 1940 | + |
| 1941 | +# ỗ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE] |
| 1942 | +"\u1ED7" => "o" |
| 1943 | + |
| 1944 | +# ộ [LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW] |
| 1945 | +"\u1ED9" => "o" |
| 1946 | + |
| 1947 | +# ớ [LATIN SMALL LETTER O WITH HORN AND ACUTE] |
| 1948 | +"\u1EDB" => "o" |
| 1949 | + |
| 1950 | +# ờ [LATIN SMALL LETTER O WITH HORN AND GRAVE] |
| 1951 | +"\u1EDD" => "o" |
| 1952 | + |
| 1953 | +# ở [LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE] |
| 1954 | +"\u1EDF" => "o" |
| 1955 | + |
| 1956 | +# ỡ [LATIN SMALL LETTER O WITH HORN AND TILDE] |
| 1957 | +"\u1EE1" => "o" |
| 1958 | + |
| 1959 | +# ợ [LATIN SMALL LETTER O WITH HORN AND DOT BELOW] |
| 1960 | +"\u1EE3" => "o" |
| 1961 | + |
| 1962 | +# ₒ [LATIN SUBSCRIPT SMALL LETTER O] |
| 1963 | +"\u2092" => "o" |
| 1964 | + |
| 1965 | +# ⓞ [CIRCLED LATIN SMALL LETTER O] |
| 1966 | +"\u24DE" => "o" |
| 1967 | + |
| 1968 | +# ⱺ [LATIN SMALL LETTER O WITH LOW RING INSIDE] |
| 1969 | +"\u2C7A" => "o" |
| 1970 | + |
| 1971 | +# ꝋ [LATIN SMALL LETTER O WITH LONG STROKE OVERLAY] |
| 1972 | +"\uA74B" => "o" |
| 1973 | + |
| 1974 | +# ꝍ [LATIN SMALL LETTER O WITH LOOP] |
| 1975 | +"\uA74D" => "o" |
| 1976 | + |
| 1977 | +# o [FULLWIDTH LATIN SMALL LETTER O] |
| 1978 | +"\uFF4F" => "o" |
| 1979 | + |
| 1980 | +# Œ [LATIN CAPITAL LIGATURE OE] |
| 1981 | +"\u0152" => "OE" |
| 1982 | + |
| 1983 | +# ɶ [LATIN LETTER SMALL CAPITAL OE] |
| 1984 | +"\u0276" => "OE" |
| 1985 | + |
| 1986 | +# Ꝏ [LATIN CAPITAL LETTER OO] |
| 1987 | +"\uA74E" => "OO" |
| 1988 | + |
| 1989 | +# Ȣ http://en.wikipedia.org/wiki/OU [LATIN CAPITAL LETTER OU] |
| 1990 | +"\u0222" => "OU" |
| 1991 | + |
| 1992 | +# ᴕ [LATIN LETTER SMALL CAPITAL OU] |
| 1993 | +"\u1D15" => "OU" |
| 1994 | + |
| 1995 | +# ⒪ [PARENTHESIZED LATIN SMALL LETTER O] |
| 1996 | +"\u24AA" => "(o)" |
| 1997 | + |
| 1998 | +# œ [LATIN SMALL LIGATURE OE] |
| 1999 | +"\u0153" => "oe" |
| 2000 | + |
| 2001 | +# ᴔ [LATIN SMALL LETTER TURNED OE] |
| 2002 | +"\u1D14" => "oe" |
| 2003 | + |
| 2004 | +# ꝏ [LATIN SMALL LETTER OO] |
| 2005 | +"\uA74F" => "oo" |
| 2006 | + |
| 2007 | +# ȣ http://en.wikipedia.org/wiki/OU [LATIN SMALL LETTER OU] |
| 2008 | +"\u0223" => "ou" |
| 2009 | + |
| 2010 | +# Ƥ [LATIN CAPITAL LETTER P WITH HOOK] |
| 2011 | +"\u01A4" => "P" |
| 2012 | + |
| 2013 | +# ᴘ [LATIN LETTER SMALL CAPITAL P] |
| 2014 | +"\u1D18" => "P" |
| 2015 | + |
| 2016 | +# Ṕ [LATIN CAPITAL LETTER P WITH ACUTE] |
| 2017 | +"\u1E54" => "P" |
| 2018 | + |
| 2019 | +# Ṗ [LATIN CAPITAL LETTER P WITH DOT ABOVE] |
| 2020 | +"\u1E56" => "P" |
| 2021 | + |
| 2022 | +# Ⓟ [CIRCLED LATIN CAPITAL LETTER P] |
| 2023 | +"\u24C5" => "P" |
| 2024 | + |
| 2025 | +# Ᵽ [LATIN CAPITAL LETTER P WITH STROKE] |
| 2026 | +"\u2C63" => "P" |
| 2027 | + |
| 2028 | +# Ꝑ [LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER] |
| 2029 | +"\uA750" => "P" |
| 2030 | + |
| 2031 | +# Ꝓ [LATIN CAPITAL LETTER P WITH FLOURISH] |
| 2032 | +"\uA752" => "P" |
| 2033 | + |
| 2034 | +# Ꝕ [LATIN CAPITAL LETTER P WITH SQUIRREL TAIL] |
| 2035 | +"\uA754" => "P" |
| 2036 | + |
| 2037 | +# P [FULLWIDTH LATIN CAPITAL LETTER P] |
| 2038 | +"\uFF30" => "P" |
| 2039 | + |
| 2040 | +# ƥ [LATIN SMALL LETTER P WITH HOOK] |
| 2041 | +"\u01A5" => "p" |
| 2042 | + |
| 2043 | +# ᵱ [LATIN SMALL LETTER P WITH MIDDLE TILDE] |
| 2044 | +"\u1D71" => "p" |
| 2045 | + |
| 2046 | +# ᵽ [LATIN SMALL LETTER P WITH STROKE] |
| 2047 | +"\u1D7D" => "p" |
| 2048 | + |
| 2049 | +# ᶈ [LATIN SMALL LETTER P WITH PALATAL HOOK] |
| 2050 | +"\u1D88" => "p" |
| 2051 | + |
| 2052 | +# ṕ [LATIN SMALL LETTER P WITH ACUTE] |
| 2053 | +"\u1E55" => "p" |
| 2054 | + |
| 2055 | +# ṗ [LATIN SMALL LETTER P WITH DOT ABOVE] |
| 2056 | +"\u1E57" => "p" |
| 2057 | + |
| 2058 | +# ⓟ [CIRCLED LATIN SMALL LETTER P] |
| 2059 | +"\u24DF" => "p" |
| 2060 | + |
| 2061 | +# ꝑ [LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER] |
| 2062 | +"\uA751" => "p" |
| 2063 | + |
| 2064 | +# ꝓ [LATIN SMALL LETTER P WITH FLOURISH] |
| 2065 | +"\uA753" => "p" |
| 2066 | + |
| 2067 | +# ꝕ [LATIN SMALL LETTER P WITH SQUIRREL TAIL] |
| 2068 | +"\uA755" => "p" |
| 2069 | + |
| 2070 | +# ꟼ [LATIN EPIGRAPHIC LETTER REVERSED P] |
| 2071 | +"\uA7FC" => "p" |
| 2072 | + |
| 2073 | +# p [FULLWIDTH LATIN SMALL LETTER P] |
| 2074 | +"\uFF50" => "p" |
| 2075 | + |
| 2076 | +# ⒫ [PARENTHESIZED LATIN SMALL LETTER P] |
| 2077 | +"\u24AB" => "(p)" |
| 2078 | + |
| 2079 | +# Ɋ [LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL] |
| 2080 | +"\u024A" => "Q" |
| 2081 | + |
| 2082 | +# Ⓠ [CIRCLED LATIN CAPITAL LETTER Q] |
| 2083 | +"\u24C6" => "Q" |
| 2084 | + |
| 2085 | +# Ꝗ [LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER] |
| 2086 | +"\uA756" => "Q" |
| 2087 | + |
| 2088 | +# Ꝙ [LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE] |
| 2089 | +"\uA758" => "Q" |
| 2090 | + |
| 2091 | +# Q [FULLWIDTH LATIN CAPITAL LETTER Q] |
| 2092 | +"\uFF31" => "Q" |
| 2093 | + |
| 2094 | +# ĸ http://en.wikipedia.org/wiki/Kra_(letter) [LATIN SMALL LETTER KRA] |
| 2095 | +"\u0138" => "q" |
| 2096 | + |
| 2097 | +# ɋ [LATIN SMALL LETTER Q WITH HOOK TAIL] |
| 2098 | +"\u024B" => "q" |
| 2099 | + |
| 2100 | +# ʠ [LATIN SMALL LETTER Q WITH HOOK] |
| 2101 | +"\u02A0" => "q" |
| 2102 | + |
| 2103 | +# ⓠ [CIRCLED LATIN SMALL LETTER Q] |
| 2104 | +"\u24E0" => "q" |
| 2105 | + |
| 2106 | +# ꝗ [LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER] |
| 2107 | +"\uA757" => "q" |
| 2108 | + |
| 2109 | +# ꝙ [LATIN SMALL LETTER Q WITH DIAGONAL STROKE] |
| 2110 | +"\uA759" => "q" |
| 2111 | + |
| 2112 | +# q [FULLWIDTH LATIN SMALL LETTER Q] |
| 2113 | +"\uFF51" => "q" |
| 2114 | + |
| 2115 | +# ⒬ [PARENTHESIZED LATIN SMALL LETTER Q] |
| 2116 | +"\u24AC" => "(q)" |
| 2117 | + |
| 2118 | +# ȹ [LATIN SMALL LETTER QP DIGRAPH] |
| 2119 | +"\u0239" => "qp" |
| 2120 | + |
| 2121 | +# Ŕ [LATIN CAPITAL LETTER R WITH ACUTE] |
| 2122 | +"\u0154" => "R" |
| 2123 | + |
| 2124 | +# Ŗ [LATIN CAPITAL LETTER R WITH CEDILLA] |
| 2125 | +"\u0156" => "R" |
| 2126 | + |
| 2127 | +# Ř [LATIN CAPITAL LETTER R WITH CARON] |
| 2128 | +"\u0158" => "R" |
| 2129 | + |
| 2130 | +# Ȓ [LATIN CAPITAL LETTER R WITH DOUBLE GRAVE] |
| 2131 | +"\u0210" => "R" |
| 2132 | + |
| 2133 | +# Ȓ [LATIN CAPITAL LETTER R WITH INVERTED BREVE] |
| 2134 | +"\u0212" => "R" |
| 2135 | + |
| 2136 | +# Ɍ [LATIN CAPITAL LETTER R WITH STROKE] |
| 2137 | +"\u024C" => "R" |
| 2138 | + |
| 2139 | +# ʀ [LATIN LETTER SMALL CAPITAL R] |
| 2140 | +"\u0280" => "R" |
| 2141 | + |
| 2142 | +# ʁ [LATIN LETTER SMALL CAPITAL INVERTED R] |
| 2143 | +"\u0281" => "R" |
| 2144 | + |
| 2145 | +# ᴙ [LATIN LETTER SMALL CAPITAL REVERSED R] |
| 2146 | +"\u1D19" => "R" |
| 2147 | + |
| 2148 | +# ᴚ [LATIN LETTER SMALL CAPITAL TURNED R] |
| 2149 | +"\u1D1A" => "R" |
| 2150 | + |
| 2151 | +# Ṙ [LATIN CAPITAL LETTER R WITH DOT ABOVE] |
| 2152 | +"\u1E58" => "R" |
| 2153 | + |
| 2154 | +# Ṛ [LATIN CAPITAL LETTER R WITH DOT BELOW] |
| 2155 | +"\u1E5A" => "R" |
| 2156 | + |
| 2157 | +# Ṝ [LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON] |
| 2158 | +"\u1E5C" => "R" |
| 2159 | + |
| 2160 | +# Ṟ [LATIN CAPITAL LETTER R WITH LINE BELOW] |
| 2161 | +"\u1E5E" => "R" |
| 2162 | + |
| 2163 | +# Ⓡ [CIRCLED LATIN CAPITAL LETTER R] |
| 2164 | +"\u24C7" => "R" |
| 2165 | + |
| 2166 | +# Ɽ [LATIN CAPITAL LETTER R WITH TAIL] |
| 2167 | +"\u2C64" => "R" |
| 2168 | + |
| 2169 | +# Ꝛ [LATIN CAPITAL LETTER R ROTUNDA] |
| 2170 | +"\uA75A" => "R" |
| 2171 | + |
| 2172 | +# Ꞃ [LATIN CAPITAL LETTER INSULAR R] |
| 2173 | +"\uA782" => "R" |
| 2174 | + |
| 2175 | +# R [FULLWIDTH LATIN CAPITAL LETTER R] |
| 2176 | +"\uFF32" => "R" |
| 2177 | + |
| 2178 | +# ŕ [LATIN SMALL LETTER R WITH ACUTE] |
| 2179 | +"\u0155" => "r" |
| 2180 | + |
| 2181 | +# ŗ [LATIN SMALL LETTER R WITH CEDILLA] |
| 2182 | +"\u0157" => "r" |
| 2183 | + |
| 2184 | +# ř [LATIN SMALL LETTER R WITH CARON] |
| 2185 | +"\u0159" => "r" |
| 2186 | + |
| 2187 | +# ȑ [LATIN SMALL LETTER R WITH DOUBLE GRAVE] |
| 2188 | +"\u0211" => "r" |
| 2189 | + |
| 2190 | +# ȓ [LATIN SMALL LETTER R WITH INVERTED BREVE] |
| 2191 | +"\u0213" => "r" |
| 2192 | + |
| 2193 | +# ɍ [LATIN SMALL LETTER R WITH STROKE] |
| 2194 | +"\u024D" => "r" |
| 2195 | + |
| 2196 | +# ɼ [LATIN SMALL LETTER R WITH LONG LEG] |
| 2197 | +"\u027C" => "r" |
| 2198 | + |
| 2199 | +# ɽ [LATIN SMALL LETTER R WITH TAIL] |
| 2200 | +"\u027D" => "r" |
| 2201 | + |
| 2202 | +# ɾ [LATIN SMALL LETTER R WITH FISHHOOK] |
| 2203 | +"\u027E" => "r" |
| 2204 | + |
| 2205 | +# ɿ [LATIN SMALL LETTER REVERSED R WITH FISHHOOK] |
| 2206 | +"\u027F" => "r" |
| 2207 | + |
| 2208 | +# ᵣ [LATIN SUBSCRIPT SMALL LETTER R] |
| 2209 | +"\u1D63" => "r" |
| 2210 | + |
| 2211 | +# ᵲ [LATIN SMALL LETTER R WITH MIDDLE TILDE] |
| 2212 | +"\u1D72" => "r" |
| 2213 | + |
| 2214 | +# ᵳ [LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE] |
| 2215 | +"\u1D73" => "r" |
| 2216 | + |
| 2217 | +# ᶉ [LATIN SMALL LETTER R WITH PALATAL HOOK] |
| 2218 | +"\u1D89" => "r" |
| 2219 | + |
| 2220 | +# ṙ [LATIN SMALL LETTER R WITH DOT ABOVE] |
| 2221 | +"\u1E59" => "r" |
| 2222 | + |
| 2223 | +# ṛ [LATIN SMALL LETTER R WITH DOT BELOW] |
| 2224 | +"\u1E5B" => "r" |
| 2225 | + |
| 2226 | +# ṝ [LATIN SMALL LETTER R WITH DOT BELOW AND MACRON] |
| 2227 | +"\u1E5D" => "r" |
| 2228 | + |
| 2229 | +# ṟ [LATIN SMALL LETTER R WITH LINE BELOW] |
| 2230 | +"\u1E5F" => "r" |
| 2231 | + |
| 2232 | +# ⓡ [CIRCLED LATIN SMALL LETTER R] |
| 2233 | +"\u24E1" => "r" |
| 2234 | + |
| 2235 | +# ꝛ [LATIN SMALL LETTER R ROTUNDA] |
| 2236 | +"\uA75B" => "r" |
| 2237 | + |
| 2238 | +# ꞃ [LATIN SMALL LETTER INSULAR R] |
| 2239 | +"\uA783" => "r" |
| 2240 | + |
| 2241 | +# r [FULLWIDTH LATIN SMALL LETTER R] |
| 2242 | +"\uFF52" => "r" |
| 2243 | + |
| 2244 | +# ⒭ [PARENTHESIZED LATIN SMALL LETTER R] |
| 2245 | +"\u24AD" => "(r)" |
| 2246 | + |
| 2247 | +# Ś [LATIN CAPITAL LETTER S WITH ACUTE] |
| 2248 | +"\u015A" => "S" |
| 2249 | + |
| 2250 | +# Ŝ [LATIN CAPITAL LETTER S WITH CIRCUMFLEX] |
| 2251 | +"\u015C" => "S" |
| 2252 | + |
| 2253 | +# Ş [LATIN CAPITAL LETTER S WITH CEDILLA] |
| 2254 | +"\u015E" => "S" |
| 2255 | + |
| 2256 | +# Š [LATIN CAPITAL LETTER S WITH CARON] |
| 2257 | +"\u0160" => "S" |
| 2258 | + |
| 2259 | +# Ș [LATIN CAPITAL LETTER S WITH COMMA BELOW] |
| 2260 | +"\u0218" => "S" |
| 2261 | + |
| 2262 | +# Ṡ [LATIN CAPITAL LETTER S WITH DOT ABOVE] |
| 2263 | +"\u1E60" => "S" |
| 2264 | + |
| 2265 | +# Ṣ [LATIN CAPITAL LETTER S WITH DOT BELOW] |
| 2266 | +"\u1E62" => "S" |
| 2267 | + |
| 2268 | +# Ṥ [LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE] |
| 2269 | +"\u1E64" => "S" |
| 2270 | + |
| 2271 | +# Ṧ [LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE] |
| 2272 | +"\u1E66" => "S" |
| 2273 | + |
| 2274 | +# Ṩ [LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE] |
| 2275 | +"\u1E68" => "S" |
| 2276 | + |
| 2277 | +# Ⓢ [CIRCLED LATIN CAPITAL LETTER S] |
| 2278 | +"\u24C8" => "S" |
| 2279 | + |
| 2280 | +# ꜱ [LATIN LETTER SMALL CAPITAL S] |
| 2281 | +"\uA731" => "S" |
| 2282 | + |
| 2283 | +# ꞅ [LATIN SMALL LETTER INSULAR S] |
| 2284 | +"\uA785" => "S" |
| 2285 | + |
| 2286 | +# S [FULLWIDTH LATIN CAPITAL LETTER S] |
| 2287 | +"\uFF33" => "S" |
| 2288 | + |
| 2289 | +# ś [LATIN SMALL LETTER S WITH ACUTE] |
| 2290 | +"\u015B" => "s" |
| 2291 | + |
| 2292 | +# ŝ [LATIN SMALL LETTER S WITH CIRCUMFLEX] |
| 2293 | +"\u015D" => "s" |
| 2294 | + |
| 2295 | +# ş [LATIN SMALL LETTER S WITH CEDILLA] |
| 2296 | +"\u015F" => "s" |
| 2297 | + |
| 2298 | +# š [LATIN SMALL LETTER S WITH CARON] |
| 2299 | +"\u0161" => "s" |
| 2300 | + |
| 2301 | +# ſ http://en.wikipedia.org/wiki/Long_S [LATIN SMALL LETTER LONG S] |
| 2302 | +"\u017F" => "s" |
| 2303 | + |
| 2304 | +# ș [LATIN SMALL LETTER S WITH COMMA BELOW] |
| 2305 | +"\u0219" => "s" |
| 2306 | + |
| 2307 | +# ȿ [LATIN SMALL LETTER S WITH SWASH TAIL] |
| 2308 | +"\u023F" => "s" |
| 2309 | + |
| 2310 | +# ʂ [LATIN SMALL LETTER S WITH HOOK] |
| 2311 | +"\u0282" => "s" |
| 2312 | + |
| 2313 | +# ᵴ [LATIN SMALL LETTER S WITH MIDDLE TILDE] |
| 2314 | +"\u1D74" => "s" |
| 2315 | + |
| 2316 | +# ᶊ [LATIN SMALL LETTER S WITH PALATAL HOOK] |
| 2317 | +"\u1D8A" => "s" |
| 2318 | + |
| 2319 | +# ṡ [LATIN SMALL LETTER S WITH DOT ABOVE] |
| 2320 | +"\u1E61" => "s" |
| 2321 | + |
| 2322 | +# ṣ [LATIN SMALL LETTER S WITH DOT BELOW] |
| 2323 | +"\u1E63" => "s" |
| 2324 | + |
| 2325 | +# ṥ [LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE] |
| 2326 | +"\u1E65" => "s" |
| 2327 | + |
| 2328 | +# ṧ [LATIN SMALL LETTER S WITH CARON AND DOT ABOVE] |
| 2329 | +"\u1E67" => "s" |
| 2330 | + |
| 2331 | +# ṩ [LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE] |
| 2332 | +"\u1E69" => "s" |
| 2333 | + |
| 2334 | +# ẜ [LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE] |
| 2335 | +"\u1E9C" => "s" |
| 2336 | + |
| 2337 | +# ẝ [LATIN SMALL LETTER LONG S WITH HIGH STROKE] |
| 2338 | +"\u1E9D" => "s" |
| 2339 | + |
| 2340 | +# ⓢ [CIRCLED LATIN SMALL LETTER S] |
| 2341 | +"\u24E2" => "s" |
| 2342 | + |
| 2343 | +# Ꞅ [LATIN CAPITAL LETTER INSULAR S] |
| 2344 | +"\uA784" => "s" |
| 2345 | + |
| 2346 | +# s [FULLWIDTH LATIN SMALL LETTER S] |
| 2347 | +"\uFF53" => "s" |
| 2348 | + |
| 2349 | +# ẞ [LATIN CAPITAL LETTER SHARP S] |
| 2350 | +"\u1E9E" => "SS" |
| 2351 | + |
| 2352 | +# ⒮ [PARENTHESIZED LATIN SMALL LETTER S] |
| 2353 | +"\u24AE" => "(s)" |
| 2354 | + |
| 2355 | +# ß [LATIN SMALL LETTER SHARP S] |
| 2356 | +"\u00DF" => "ss" |
| 2357 | + |
| 2358 | +# st [LATIN SMALL LIGATURE ST] |
| 2359 | +"\uFB06" => "st" |
| 2360 | + |
| 2361 | +# Ţ [LATIN CAPITAL LETTER T WITH CEDILLA] |
| 2362 | +"\u0162" => "T" |
| 2363 | + |
| 2364 | +# Ť [LATIN CAPITAL LETTER T WITH CARON] |
| 2365 | +"\u0164" => "T" |
| 2366 | + |
| 2367 | +# Ŧ [LATIN CAPITAL LETTER T WITH STROKE] |
| 2368 | +"\u0166" => "T" |
| 2369 | + |
| 2370 | +# Ƭ [LATIN CAPITAL LETTER T WITH HOOK] |
| 2371 | +"\u01AC" => "T" |
| 2372 | + |
| 2373 | +# Ʈ [LATIN CAPITAL LETTER T WITH RETROFLEX HOOK] |
| 2374 | +"\u01AE" => "T" |
| 2375 | + |
| 2376 | +# Ț [LATIN CAPITAL LETTER T WITH COMMA BELOW] |
| 2377 | +"\u021A" => "T" |
| 2378 | + |
| 2379 | +# Ⱦ [LATIN CAPITAL LETTER T WITH DIAGONAL STROKE] |
| 2380 | +"\u023E" => "T" |
| 2381 | + |
| 2382 | +# ᴛ [LATIN LETTER SMALL CAPITAL T] |
| 2383 | +"\u1D1B" => "T" |
| 2384 | + |
| 2385 | +# Ṫ [LATIN CAPITAL LETTER T WITH DOT ABOVE] |
| 2386 | +"\u1E6A" => "T" |
| 2387 | + |
| 2388 | +# Ṭ [LATIN CAPITAL LETTER T WITH DOT BELOW] |
| 2389 | +"\u1E6C" => "T" |
| 2390 | + |
| 2391 | +# Ṯ [LATIN CAPITAL LETTER T WITH LINE BELOW] |
| 2392 | +"\u1E6E" => "T" |
| 2393 | + |
| 2394 | +# Ṱ [LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW] |
| 2395 | +"\u1E70" => "T" |
| 2396 | + |
| 2397 | +# Ⓣ [CIRCLED LATIN CAPITAL LETTER T] |
| 2398 | +"\u24C9" => "T" |
| 2399 | + |
| 2400 | +# Ꞇ [LATIN CAPITAL LETTER INSULAR T] |
| 2401 | +"\uA786" => "T" |
| 2402 | + |
| 2403 | +# T [FULLWIDTH LATIN CAPITAL LETTER T] |
| 2404 | +"\uFF34" => "T" |
| 2405 | + |
| 2406 | +# ţ [LATIN SMALL LETTER T WITH CEDILLA] |
| 2407 | +"\u0163" => "t" |
| 2408 | + |
| 2409 | +# ť [LATIN SMALL LETTER T WITH CARON] |
| 2410 | +"\u0165" => "t" |
| 2411 | + |
| 2412 | +# ŧ [LATIN SMALL LETTER T WITH STROKE] |
| 2413 | +"\u0167" => "t" |
| 2414 | + |
| 2415 | +# ƫ [LATIN SMALL LETTER T WITH PALATAL HOOK] |
| 2416 | +"\u01AB" => "t" |
| 2417 | + |
| 2418 | +# ƭ [LATIN SMALL LETTER T WITH HOOK] |
| 2419 | +"\u01AD" => "t" |
| 2420 | + |
| 2421 | +# ț [LATIN SMALL LETTER T WITH COMMA BELOW] |
| 2422 | +"\u021B" => "t" |
| 2423 | + |
| 2424 | +# ȶ [LATIN SMALL LETTER T WITH CURL] |
| 2425 | +"\u0236" => "t" |
| 2426 | + |
| 2427 | +# ʇ [LATIN SMALL LETTER TURNED T] |
| 2428 | +"\u0287" => "t" |
| 2429 | + |
| 2430 | +# ʈ [LATIN SMALL LETTER T WITH RETROFLEX HOOK] |
| 2431 | +"\u0288" => "t" |
| 2432 | + |
| 2433 | +# ᵵ [LATIN SMALL LETTER T WITH MIDDLE TILDE] |
| 2434 | +"\u1D75" => "t" |
| 2435 | + |
| 2436 | +# ṫ [LATIN SMALL LETTER T WITH DOT ABOVE] |
| 2437 | +"\u1E6B" => "t" |
| 2438 | + |
| 2439 | +# ṭ [LATIN SMALL LETTER T WITH DOT BELOW] |
| 2440 | +"\u1E6D" => "t" |
| 2441 | + |
| 2442 | +# ṯ [LATIN SMALL LETTER T WITH LINE BELOW] |
| 2443 | +"\u1E6F" => "t" |
| 2444 | + |
| 2445 | +# ṱ [LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW] |
| 2446 | +"\u1E71" => "t" |
| 2447 | + |
| 2448 | +# ẗ [LATIN SMALL LETTER T WITH DIAERESIS] |
| 2449 | +"\u1E97" => "t" |
| 2450 | + |
| 2451 | +# ⓣ [CIRCLED LATIN SMALL LETTER T] |
| 2452 | +"\u24E3" => "t" |
| 2453 | + |
| 2454 | +# ⱦ [LATIN SMALL LETTER T WITH DIAGONAL STROKE] |
| 2455 | +"\u2C66" => "t" |
| 2456 | + |
| 2457 | +# t [FULLWIDTH LATIN SMALL LETTER T] |
| 2458 | +"\uFF54" => "t" |
| 2459 | + |
| 2460 | +# Þ [LATIN CAPITAL LETTER THORN] |
| 2461 | +"\u00DE" => "TH" |
| 2462 | + |
| 2463 | +# Ꝧ [LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER] |
| 2464 | +"\uA766" => "TH" |
| 2465 | + |
| 2466 | +# Ꜩ [LATIN CAPITAL LETTER TZ] |
| 2467 | +"\uA728" => "TZ" |
| 2468 | + |
| 2469 | +# ⒯ [PARENTHESIZED LATIN SMALL LETTER T] |
| 2470 | +"\u24AF" => "(t)" |
| 2471 | + |
| 2472 | +# ʨ [LATIN SMALL LETTER TC DIGRAPH WITH CURL] |
| 2473 | +"\u02A8" => "tc" |
| 2474 | + |
| 2475 | +# þ [LATIN SMALL LETTER THORN] |
| 2476 | +"\u00FE" => "th" |
| 2477 | + |
| 2478 | +# ᵺ [LATIN SMALL LETTER TH WITH STRIKETHROUGH] |
| 2479 | +"\u1D7A" => "th" |
| 2480 | + |
| 2481 | +# ꝧ [LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER] |
| 2482 | +"\uA767" => "th" |
| 2483 | + |
| 2484 | +# ʦ [LATIN SMALL LETTER TS DIGRAPH] |
| 2485 | +"\u02A6" => "ts" |
| 2486 | + |
| 2487 | +# ꜩ [LATIN SMALL LETTER TZ] |
| 2488 | +"\uA729" => "tz" |
| 2489 | + |
| 2490 | +# Ù [LATIN CAPITAL LETTER U WITH GRAVE] |
| 2491 | +"\u00D9" => "U" |
| 2492 | + |
| 2493 | +# Ú [LATIN CAPITAL LETTER U WITH ACUTE] |
| 2494 | +"\u00DA" => "U" |
| 2495 | + |
| 2496 | +# Û [LATIN CAPITAL LETTER U WITH CIRCUMFLEX] |
| 2497 | +"\u00DB" => "U" |
| 2498 | + |
| 2499 | +# Ü [LATIN CAPITAL LETTER U WITH DIAERESIS] |
| 2500 | +"\u00DC" => "U" |
| 2501 | + |
| 2502 | +# Ũ [LATIN CAPITAL LETTER U WITH TILDE] |
| 2503 | +"\u0168" => "U" |
| 2504 | + |
| 2505 | +# Ū [LATIN CAPITAL LETTER U WITH MACRON] |
| 2506 | +"\u016A" => "U" |
| 2507 | + |
| 2508 | +# Ŭ [LATIN CAPITAL LETTER U WITH BREVE] |
| 2509 | +"\u016C" => "U" |
| 2510 | + |
| 2511 | +# Ů [LATIN CAPITAL LETTER U WITH RING ABOVE] |
| 2512 | +"\u016E" => "U" |
| 2513 | + |
| 2514 | +# Ű [LATIN CAPITAL LETTER U WITH DOUBLE ACUTE] |
| 2515 | +"\u0170" => "U" |
| 2516 | + |
| 2517 | +# Ų [LATIN CAPITAL LETTER U WITH OGONEK] |
| 2518 | +"\u0172" => "U" |
| 2519 | + |
| 2520 | +# Ư [LATIN CAPITAL LETTER U WITH HORN] |
| 2521 | +"\u01AF" => "U" |
| 2522 | + |
| 2523 | +# Ǔ [LATIN CAPITAL LETTER U WITH CARON] |
| 2524 | +"\u01D3" => "U" |
| 2525 | + |
| 2526 | +# Ǖ [LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON] |
| 2527 | +"\u01D5" => "U" |
| 2528 | + |
| 2529 | +# Ǘ [LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE] |
| 2530 | +"\u01D7" => "U" |
| 2531 | + |
| 2532 | +# Ǚ [LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON] |
| 2533 | +"\u01D9" => "U" |
| 2534 | + |
| 2535 | +# Ǜ [LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE] |
| 2536 | +"\u01DB" => "U" |
| 2537 | + |
| 2538 | +# Ȕ [LATIN CAPITAL LETTER U WITH DOUBLE GRAVE] |
| 2539 | +"\u0214" => "U" |
| 2540 | + |
| 2541 | +# Ȗ [LATIN CAPITAL LETTER U WITH INVERTED BREVE] |
| 2542 | +"\u0216" => "U" |
| 2543 | + |
| 2544 | +# Ʉ [LATIN CAPITAL LETTER U BAR] |
| 2545 | +"\u0244" => "U" |
| 2546 | + |
| 2547 | +# ᴜ [LATIN LETTER SMALL CAPITAL U] |
| 2548 | +"\u1D1C" => "U" |
| 2549 | + |
| 2550 | +# ᵾ [LATIN SMALL CAPITAL LETTER U WITH STROKE] |
| 2551 | +"\u1D7E" => "U" |
| 2552 | + |
| 2553 | +# Ṳ [LATIN CAPITAL LETTER U WITH DIAERESIS BELOW] |
| 2554 | +"\u1E72" => "U" |
| 2555 | + |
| 2556 | +# Ṵ [LATIN CAPITAL LETTER U WITH TILDE BELOW] |
| 2557 | +"\u1E74" => "U" |
| 2558 | + |
| 2559 | +# Ṷ [LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW] |
| 2560 | +"\u1E76" => "U" |
| 2561 | + |
| 2562 | +# Ṹ [LATIN CAPITAL LETTER U WITH TILDE AND ACUTE] |
| 2563 | +"\u1E78" => "U" |
| 2564 | + |
| 2565 | +# Ṻ [LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS] |
| 2566 | +"\u1E7A" => "U" |
| 2567 | + |
| 2568 | +# Ụ [LATIN CAPITAL LETTER U WITH DOT BELOW] |
| 2569 | +"\u1EE4" => "U" |
| 2570 | + |
| 2571 | +# Ủ [LATIN CAPITAL LETTER U WITH HOOK ABOVE] |
| 2572 | +"\u1EE6" => "U" |
| 2573 | + |
| 2574 | +# Ứ [LATIN CAPITAL LETTER U WITH HORN AND ACUTE] |
| 2575 | +"\u1EE8" => "U" |
| 2576 | + |
| 2577 | +# Ừ [LATIN CAPITAL LETTER U WITH HORN AND GRAVE] |
| 2578 | +"\u1EEA" => "U" |
| 2579 | + |
| 2580 | +# Ử [LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE] |
| 2581 | +"\u1EEC" => "U" |
| 2582 | + |
| 2583 | +# Ữ [LATIN CAPITAL LETTER U WITH HORN AND TILDE] |
| 2584 | +"\u1EEE" => "U" |
| 2585 | + |
| 2586 | +# Ự [LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW] |
| 2587 | +"\u1EF0" => "U" |
| 2588 | + |
| 2589 | +# Ⓤ [CIRCLED LATIN CAPITAL LETTER U] |
| 2590 | +"\u24CA" => "U" |
| 2591 | + |
| 2592 | +# U [FULLWIDTH LATIN CAPITAL LETTER U] |
| 2593 | +"\uFF35" => "U" |
| 2594 | + |
| 2595 | +# ù [LATIN SMALL LETTER U WITH GRAVE] |
| 2596 | +"\u00F9" => "u" |
| 2597 | + |
| 2598 | +# ú [LATIN SMALL LETTER U WITH ACUTE] |
| 2599 | +"\u00FA" => "u" |
| 2600 | + |
| 2601 | +# û [LATIN SMALL LETTER U WITH CIRCUMFLEX] |
| 2602 | +"\u00FB" => "u" |
| 2603 | + |
| 2604 | +# ü [LATIN SMALL LETTER U WITH DIAERESIS] |
| 2605 | +"\u00FC" => "u" |
| 2606 | + |
| 2607 | +# ũ [LATIN SMALL LETTER U WITH TILDE] |
| 2608 | +"\u0169" => "u" |
| 2609 | + |
| 2610 | +# ū [LATIN SMALL LETTER U WITH MACRON] |
| 2611 | +"\u016B" => "u" |
| 2612 | + |
| 2613 | +# ŭ [LATIN SMALL LETTER U WITH BREVE] |
| 2614 | +"\u016D" => "u" |
| 2615 | + |
| 2616 | +# ů [LATIN SMALL LETTER U WITH RING ABOVE] |
| 2617 | +"\u016F" => "u" |
| 2618 | + |
| 2619 | +# ű [LATIN SMALL LETTER U WITH DOUBLE ACUTE] |
| 2620 | +"\u0171" => "u" |
| 2621 | + |
| 2622 | +# ų [LATIN SMALL LETTER U WITH OGONEK] |
| 2623 | +"\u0173" => "u" |
| 2624 | + |
| 2625 | +# ư [LATIN SMALL LETTER U WITH HORN] |
| 2626 | +"\u01B0" => "u" |
| 2627 | + |
| 2628 | +# ǔ [LATIN SMALL LETTER U WITH CARON] |
| 2629 | +"\u01D4" => "u" |
| 2630 | + |
| 2631 | +# ǖ [LATIN SMALL LETTER U WITH DIAERESIS AND MACRON] |
| 2632 | +"\u01D6" => "u" |
| 2633 | + |
| 2634 | +# ǘ [LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE] |
| 2635 | +"\u01D8" => "u" |
| 2636 | + |
| 2637 | +# ǚ [LATIN SMALL LETTER U WITH DIAERESIS AND CARON] |
| 2638 | +"\u01DA" => "u" |
| 2639 | + |
| 2640 | +# ǜ [LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE] |
| 2641 | +"\u01DC" => "u" |
| 2642 | + |
| 2643 | +# ȕ [LATIN SMALL LETTER U WITH DOUBLE GRAVE] |
| 2644 | +"\u0215" => "u" |
| 2645 | + |
| 2646 | +# ȗ [LATIN SMALL LETTER U WITH INVERTED BREVE] |
| 2647 | +"\u0217" => "u" |
| 2648 | + |
| 2649 | +# ʉ [LATIN SMALL LETTER U BAR] |
| 2650 | +"\u0289" => "u" |
| 2651 | + |
| 2652 | +# ᵤ [LATIN SUBSCRIPT SMALL LETTER U] |
| 2653 | +"\u1D64" => "u" |
| 2654 | + |
| 2655 | +# ᶙ [LATIN SMALL LETTER U WITH RETROFLEX HOOK] |
| 2656 | +"\u1D99" => "u" |
| 2657 | + |
| 2658 | +# ṳ [LATIN SMALL LETTER U WITH DIAERESIS BELOW] |
| 2659 | +"\u1E73" => "u" |
| 2660 | + |
| 2661 | +# ṵ [LATIN SMALL LETTER U WITH TILDE BELOW] |
| 2662 | +"\u1E75" => "u" |
| 2663 | + |
| 2664 | +# ṷ [LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW] |
| 2665 | +"\u1E77" => "u" |
| 2666 | + |
| 2667 | +# ṹ [LATIN SMALL LETTER U WITH TILDE AND ACUTE] |
| 2668 | +"\u1E79" => "u" |
| 2669 | + |
| 2670 | +# ṻ [LATIN SMALL LETTER U WITH MACRON AND DIAERESIS] |
| 2671 | +"\u1E7B" => "u" |
| 2672 | + |
| 2673 | +# ụ [LATIN SMALL LETTER U WITH DOT BELOW] |
| 2674 | +"\u1EE5" => "u" |
| 2675 | + |
| 2676 | +# ủ [LATIN SMALL LETTER U WITH HOOK ABOVE] |
| 2677 | +"\u1EE7" => "u" |
| 2678 | + |
| 2679 | +# ứ [LATIN SMALL LETTER U WITH HORN AND ACUTE] |
| 2680 | +"\u1EE9" => "u" |
| 2681 | + |
| 2682 | +# ừ [LATIN SMALL LETTER U WITH HORN AND GRAVE] |
| 2683 | +"\u1EEB" => "u" |
| 2684 | + |
| 2685 | +# ử [LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE] |
| 2686 | +"\u1EED" => "u" |
| 2687 | + |
| 2688 | +# ữ [LATIN SMALL LETTER U WITH HORN AND TILDE] |
| 2689 | +"\u1EEF" => "u" |
| 2690 | + |
| 2691 | +# ự [LATIN SMALL LETTER U WITH HORN AND DOT BELOW] |
| 2692 | +"\u1EF1" => "u" |
| 2693 | + |
| 2694 | +# ⓤ [CIRCLED LATIN SMALL LETTER U] |
| 2695 | +"\u24E4" => "u" |
| 2696 | + |
| 2697 | +# u [FULLWIDTH LATIN SMALL LETTER U] |
| 2698 | +"\uFF55" => "u" |
| 2699 | + |
| 2700 | +# ⒰ [PARENTHESIZED LATIN SMALL LETTER U] |
| 2701 | +"\u24B0" => "(u)" |
| 2702 | + |
| 2703 | +# ᵫ [LATIN SMALL LETTER UE] |
| 2704 | +"\u1D6B" => "ue" |
| 2705 | + |
| 2706 | +# Ʋ [LATIN CAPITAL LETTER V WITH HOOK] |
| 2707 | +"\u01B2" => "V" |
| 2708 | + |
| 2709 | +# Ʌ [LATIN CAPITAL LETTER TURNED V] |
| 2710 | +"\u0245" => "V" |
| 2711 | + |
| 2712 | +# ᴠ [LATIN LETTER SMALL CAPITAL V] |
| 2713 | +"\u1D20" => "V" |
| 2714 | + |
| 2715 | +# Ṽ [LATIN CAPITAL LETTER V WITH TILDE] |
| 2716 | +"\u1E7C" => "V" |
| 2717 | + |
| 2718 | +# Ṿ [LATIN CAPITAL LETTER V WITH DOT BELOW] |
| 2719 | +"\u1E7E" => "V" |
| 2720 | + |
| 2721 | +# Ỽ [LATIN CAPITAL LETTER MIDDLE-WELSH V] |
| 2722 | +"\u1EFC" => "V" |
| 2723 | + |
| 2724 | +# Ⓥ [CIRCLED LATIN CAPITAL LETTER V] |
| 2725 | +"\u24CB" => "V" |
| 2726 | + |
| 2727 | +# Ꝟ [LATIN CAPITAL LETTER V WITH DIAGONAL STROKE] |
| 2728 | +"\uA75E" => "V" |
| 2729 | + |
| 2730 | +# Ꝩ [LATIN CAPITAL LETTER VEND] |
| 2731 | +"\uA768" => "V" |
| 2732 | + |
| 2733 | +# V [FULLWIDTH LATIN CAPITAL LETTER V] |
| 2734 | +"\uFF36" => "V" |
| 2735 | + |
| 2736 | +# ʋ [LATIN SMALL LETTER V WITH HOOK] |
| 2737 | +"\u028B" => "v" |
| 2738 | + |
| 2739 | +# ʌ [LATIN SMALL LETTER TURNED V] |
| 2740 | +"\u028C" => "v" |
| 2741 | + |
| 2742 | +# ᵥ [LATIN SUBSCRIPT SMALL LETTER V] |
| 2743 | +"\u1D65" => "v" |
| 2744 | + |
| 2745 | +# ᶌ [LATIN SMALL LETTER V WITH PALATAL HOOK] |
| 2746 | +"\u1D8C" => "v" |
| 2747 | + |
| 2748 | +# ṽ [LATIN SMALL LETTER V WITH TILDE] |
| 2749 | +"\u1E7D" => "v" |
| 2750 | + |
| 2751 | +# ṿ [LATIN SMALL LETTER V WITH DOT BELOW] |
| 2752 | +"\u1E7F" => "v" |
| 2753 | + |
| 2754 | +# ⓥ [CIRCLED LATIN SMALL LETTER V] |
| 2755 | +"\u24E5" => "v" |
| 2756 | + |
| 2757 | +# ⱱ [LATIN SMALL LETTER V WITH RIGHT HOOK] |
| 2758 | +"\u2C71" => "v" |
| 2759 | + |
| 2760 | +# ⱴ [LATIN SMALL LETTER V WITH CURL] |
| 2761 | +"\u2C74" => "v" |
| 2762 | + |
| 2763 | +# ꝟ [LATIN SMALL LETTER V WITH DIAGONAL STROKE] |
| 2764 | +"\uA75F" => "v" |
| 2765 | + |
| 2766 | +# v [FULLWIDTH LATIN SMALL LETTER V] |
| 2767 | +"\uFF56" => "v" |
| 2768 | + |
| 2769 | +# Ꝡ [LATIN CAPITAL LETTER VY] |
| 2770 | +"\uA760" => "VY" |
| 2771 | + |
| 2772 | +# ⒱ [PARENTHESIZED LATIN SMALL LETTER V] |
| 2773 | +"\u24B1" => "(v)" |
| 2774 | + |
| 2775 | +# ꝡ [LATIN SMALL LETTER VY] |
| 2776 | +"\uA761" => "vy" |
| 2777 | + |
| 2778 | +# Ŵ [LATIN CAPITAL LETTER W WITH CIRCUMFLEX] |
| 2779 | +"\u0174" => "W" |
| 2780 | + |
| 2781 | +# Ƿ http://en.wikipedia.org/wiki/Wynn [LATIN CAPITAL LETTER WYNN] |
| 2782 | +"\u01F7" => "W" |
| 2783 | + |
| 2784 | +# ᴡ [LATIN LETTER SMALL CAPITAL W] |
| 2785 | +"\u1D21" => "W" |
| 2786 | + |
| 2787 | +# Ẁ [LATIN CAPITAL LETTER W WITH GRAVE] |
| 2788 | +"\u1E80" => "W" |
| 2789 | + |
| 2790 | +# Ẃ [LATIN CAPITAL LETTER W WITH ACUTE] |
| 2791 | +"\u1E82" => "W" |
| 2792 | + |
| 2793 | +# Ẅ [LATIN CAPITAL LETTER W WITH DIAERESIS] |
| 2794 | +"\u1E84" => "W" |
| 2795 | + |
| 2796 | +# Ẇ [LATIN CAPITAL LETTER W WITH DOT ABOVE] |
| 2797 | +"\u1E86" => "W" |
| 2798 | + |
| 2799 | +# Ẉ [LATIN CAPITAL LETTER W WITH DOT BELOW] |
| 2800 | +"\u1E88" => "W" |
| 2801 | + |
| 2802 | +# Ⓦ [CIRCLED LATIN CAPITAL LETTER W] |
| 2803 | +"\u24CC" => "W" |
| 2804 | + |
| 2805 | +# Ⱳ [LATIN CAPITAL LETTER W WITH HOOK] |
| 2806 | +"\u2C72" => "W" |
| 2807 | + |
| 2808 | +# W [FULLWIDTH LATIN CAPITAL LETTER W] |
| 2809 | +"\uFF37" => "W" |
| 2810 | + |
| 2811 | +# ŵ [LATIN SMALL LETTER W WITH CIRCUMFLEX] |
| 2812 | +"\u0175" => "w" |
| 2813 | + |
| 2814 | +# ƿ http://en.wikipedia.org/wiki/Wynn [LATIN LETTER WYNN] |
| 2815 | +"\u01BF" => "w" |
| 2816 | + |
| 2817 | +# ʍ [LATIN SMALL LETTER TURNED W] |
| 2818 | +"\u028D" => "w" |
| 2819 | + |
| 2820 | +# ẁ [LATIN SMALL LETTER W WITH GRAVE] |
| 2821 | +"\u1E81" => "w" |
| 2822 | + |
| 2823 | +# ẃ [LATIN SMALL LETTER W WITH ACUTE] |
| 2824 | +"\u1E83" => "w" |
| 2825 | + |
| 2826 | +# ẅ [LATIN SMALL LETTER W WITH DIAERESIS] |
| 2827 | +"\u1E85" => "w" |
| 2828 | + |
| 2829 | +# ẇ [LATIN SMALL LETTER W WITH DOT ABOVE] |
| 2830 | +"\u1E87" => "w" |
| 2831 | + |
| 2832 | +# ẉ [LATIN SMALL LETTER W WITH DOT BELOW] |
| 2833 | +"\u1E89" => "w" |
| 2834 | + |
| 2835 | +# ẘ [LATIN SMALL LETTER W WITH RING ABOVE] |
| 2836 | +"\u1E98" => "w" |
| 2837 | + |
| 2838 | +# ⓦ [CIRCLED LATIN SMALL LETTER W] |
| 2839 | +"\u24E6" => "w" |
| 2840 | + |
| 2841 | +# ⱳ [LATIN SMALL LETTER W WITH HOOK] |
| 2842 | +"\u2C73" => "w" |
| 2843 | + |
| 2844 | +# w [FULLWIDTH LATIN SMALL LETTER W] |
| 2845 | +"\uFF57" => "w" |
| 2846 | + |
| 2847 | +# ⒲ [PARENTHESIZED LATIN SMALL LETTER W] |
| 2848 | +"\u24B2" => "(w)" |
| 2849 | + |
| 2850 | +# Ẋ [LATIN CAPITAL LETTER X WITH DOT ABOVE] |
| 2851 | +"\u1E8A" => "X" |
| 2852 | + |
| 2853 | +# Ẍ [LATIN CAPITAL LETTER X WITH DIAERESIS] |
| 2854 | +"\u1E8C" => "X" |
| 2855 | + |
| 2856 | +# Ⓧ [CIRCLED LATIN CAPITAL LETTER X] |
| 2857 | +"\u24CD" => "X" |
| 2858 | + |
| 2859 | +# X [FULLWIDTH LATIN CAPITAL LETTER X] |
| 2860 | +"\uFF38" => "X" |
| 2861 | + |
| 2862 | +# ᶍ [LATIN SMALL LETTER X WITH PALATAL HOOK] |
| 2863 | +"\u1D8D" => "x" |
| 2864 | + |
| 2865 | +# ẋ [LATIN SMALL LETTER X WITH DOT ABOVE] |
| 2866 | +"\u1E8B" => "x" |
| 2867 | + |
| 2868 | +# ẍ [LATIN SMALL LETTER X WITH DIAERESIS] |
| 2869 | +"\u1E8D" => "x" |
| 2870 | + |
| 2871 | +# ₓ [LATIN SUBSCRIPT SMALL LETTER X] |
| 2872 | +"\u2093" => "x" |
| 2873 | + |
| 2874 | +# ⓧ [CIRCLED LATIN SMALL LETTER X] |
| 2875 | +"\u24E7" => "x" |
| 2876 | + |
| 2877 | +# x [FULLWIDTH LATIN SMALL LETTER X] |
| 2878 | +"\uFF58" => "x" |
| 2879 | + |
| 2880 | +# ⒳ [PARENTHESIZED LATIN SMALL LETTER X] |
| 2881 | +"\u24B3" => "(x)" |
| 2882 | + |
| 2883 | +# Ý [LATIN CAPITAL LETTER Y WITH ACUTE] |
| 2884 | +"\u00DD" => "Y" |
| 2885 | + |
| 2886 | +# Ŷ [LATIN CAPITAL LETTER Y WITH CIRCUMFLEX] |
| 2887 | +"\u0176" => "Y" |
| 2888 | + |
| 2889 | +# Ÿ [LATIN CAPITAL LETTER Y WITH DIAERESIS] |
| 2890 | +"\u0178" => "Y" |
| 2891 | + |
| 2892 | +# Ƴ [LATIN CAPITAL LETTER Y WITH HOOK] |
| 2893 | +"\u01B3" => "Y" |
| 2894 | + |
| 2895 | +# Ȳ [LATIN CAPITAL LETTER Y WITH MACRON] |
| 2896 | +"\u0232" => "Y" |
| 2897 | + |
| 2898 | +# Ɏ [LATIN CAPITAL LETTER Y WITH STROKE] |
| 2899 | +"\u024E" => "Y" |
| 2900 | + |
| 2901 | +# ʏ [LATIN LETTER SMALL CAPITAL Y] |
| 2902 | +"\u028F" => "Y" |
| 2903 | + |
| 2904 | +# Ẏ [LATIN CAPITAL LETTER Y WITH DOT ABOVE] |
| 2905 | +"\u1E8E" => "Y" |
| 2906 | + |
| 2907 | +# Ỳ [LATIN CAPITAL LETTER Y WITH GRAVE] |
| 2908 | +"\u1EF2" => "Y" |
| 2909 | + |
| 2910 | +# Ỵ [LATIN CAPITAL LETTER Y WITH DOT BELOW] |
| 2911 | +"\u1EF4" => "Y" |
| 2912 | + |
| 2913 | +# Ỷ [LATIN CAPITAL LETTER Y WITH HOOK ABOVE] |
| 2914 | +"\u1EF6" => "Y" |
| 2915 | + |
| 2916 | +# Ỹ [LATIN CAPITAL LETTER Y WITH TILDE] |
| 2917 | +"\u1EF8" => "Y" |
| 2918 | + |
| 2919 | +# Ỿ [LATIN CAPITAL LETTER Y WITH LOOP] |
| 2920 | +"\u1EFE" => "Y" |
| 2921 | + |
| 2922 | +# Ⓨ [CIRCLED LATIN CAPITAL LETTER Y] |
| 2923 | +"\u24CE" => "Y" |
| 2924 | + |
| 2925 | +# Y [FULLWIDTH LATIN CAPITAL LETTER Y] |
| 2926 | +"\uFF39" => "Y" |
| 2927 | + |
| 2928 | +# ý [LATIN SMALL LETTER Y WITH ACUTE] |
| 2929 | +"\u00FD" => "y" |
| 2930 | + |
| 2931 | +# ÿ [LATIN SMALL LETTER Y WITH DIAERESIS] |
| 2932 | +"\u00FF" => "y" |
| 2933 | + |
| 2934 | +# ŷ [LATIN SMALL LETTER Y WITH CIRCUMFLEX] |
| 2935 | +"\u0177" => "y" |
| 2936 | + |
| 2937 | +# ƴ [LATIN SMALL LETTER Y WITH HOOK] |
| 2938 | +"\u01B4" => "y" |
| 2939 | + |
| 2940 | +# ȳ [LATIN SMALL LETTER Y WITH MACRON] |
| 2941 | +"\u0233" => "y" |
| 2942 | + |
| 2943 | +# ɏ [LATIN SMALL LETTER Y WITH STROKE] |
| 2944 | +"\u024F" => "y" |
| 2945 | + |
| 2946 | +# ʎ [LATIN SMALL LETTER TURNED Y] |
| 2947 | +"\u028E" => "y" |
| 2948 | + |
| 2949 | +# ẏ [LATIN SMALL LETTER Y WITH DOT ABOVE] |
| 2950 | +"\u1E8F" => "y" |
| 2951 | + |
| 2952 | +# ẙ [LATIN SMALL LETTER Y WITH RING ABOVE] |
| 2953 | +"\u1E99" => "y" |
| 2954 | + |
| 2955 | +# ỳ [LATIN SMALL LETTER Y WITH GRAVE] |
| 2956 | +"\u1EF3" => "y" |
| 2957 | + |
| 2958 | +# ỵ [LATIN SMALL LETTER Y WITH DOT BELOW] |
| 2959 | +"\u1EF5" => "y" |
| 2960 | + |
| 2961 | +# ỷ [LATIN SMALL LETTER Y WITH HOOK ABOVE] |
| 2962 | +"\u1EF7" => "y" |
| 2963 | + |
| 2964 | +# ỹ [LATIN SMALL LETTER Y WITH TILDE] |
| 2965 | +"\u1EF9" => "y" |
| 2966 | + |
| 2967 | +# ỿ [LATIN SMALL LETTER Y WITH LOOP] |
| 2968 | +"\u1EFF" => "y" |
| 2969 | + |
| 2970 | +# ⓨ [CIRCLED LATIN SMALL LETTER Y] |
| 2971 | +"\u24E8" => "y" |
| 2972 | + |
| 2973 | +# y [FULLWIDTH LATIN SMALL LETTER Y] |
| 2974 | +"\uFF59" => "y" |
| 2975 | + |
| 2976 | +# ⒴ [PARENTHESIZED LATIN SMALL LETTER Y] |
| 2977 | +"\u24B4" => "(y)" |
| 2978 | + |
| 2979 | +# Ź [LATIN CAPITAL LETTER Z WITH ACUTE] |
| 2980 | +"\u0179" => "Z" |
| 2981 | + |
| 2982 | +# Ż [LATIN CAPITAL LETTER Z WITH DOT ABOVE] |
| 2983 | +"\u017B" => "Z" |
| 2984 | + |
| 2985 | +# Ž [LATIN CAPITAL LETTER Z WITH CARON] |
| 2986 | +"\u017D" => "Z" |
| 2987 | + |
| 2988 | +# Ƶ [LATIN CAPITAL LETTER Z WITH STROKE] |
| 2989 | +"\u01B5" => "Z" |
| 2990 | + |
| 2991 | +# Ȝ http://en.wikipedia.org/wiki/Yogh [LATIN CAPITAL LETTER YOGH] |
| 2992 | +"\u021C" => "Z" |
| 2993 | + |
| 2994 | +# Ȥ [LATIN CAPITAL LETTER Z WITH HOOK] |
| 2995 | +"\u0224" => "Z" |
| 2996 | + |
| 2997 | +# ᴢ [LATIN LETTER SMALL CAPITAL Z] |
| 2998 | +"\u1D22" => "Z" |
| 2999 | + |
| 3000 | +# Ẑ [LATIN CAPITAL LETTER Z WITH CIRCUMFLEX] |
| 3001 | +"\u1E90" => "Z" |
| 3002 | + |
| 3003 | +# Ẓ [LATIN CAPITAL LETTER Z WITH DOT BELOW] |
| 3004 | +"\u1E92" => "Z" |
| 3005 | + |
| 3006 | +# Ẕ [LATIN CAPITAL LETTER Z WITH LINE BELOW] |
| 3007 | +"\u1E94" => "Z" |
| 3008 | + |
| 3009 | +# Ⓩ [CIRCLED LATIN CAPITAL LETTER Z] |
| 3010 | +"\u24CF" => "Z" |
| 3011 | + |
| 3012 | +# Ⱬ [LATIN CAPITAL LETTER Z WITH DESCENDER] |
| 3013 | +"\u2C6B" => "Z" |
| 3014 | + |
| 3015 | +# Ꝣ [LATIN CAPITAL LETTER VISIGOTHIC Z] |
| 3016 | +"\uA762" => "Z" |
| 3017 | + |
| 3018 | +# Z [FULLWIDTH LATIN CAPITAL LETTER Z] |
| 3019 | +"\uFF3A" => "Z" |
| 3020 | + |
| 3021 | +# ź [LATIN SMALL LETTER Z WITH ACUTE] |
| 3022 | +"\u017A" => "z" |
| 3023 | + |
| 3024 | +# ż [LATIN SMALL LETTER Z WITH DOT ABOVE] |
| 3025 | +"\u017C" => "z" |
| 3026 | + |
| 3027 | +# ž [LATIN SMALL LETTER Z WITH CARON] |
| 3028 | +"\u017E" => "z" |
| 3029 | + |
| 3030 | +# ƶ [LATIN SMALL LETTER Z WITH STROKE] |
| 3031 | +"\u01B6" => "z" |
| 3032 | + |
| 3033 | +# ȝ http://en.wikipedia.org/wiki/Yogh [LATIN SMALL LETTER YOGH] |
| 3034 | +"\u021D" => "z" |
| 3035 | + |
| 3036 | +# ȥ [LATIN SMALL LETTER Z WITH HOOK] |
| 3037 | +"\u0225" => "z" |
| 3038 | + |
| 3039 | +# ɀ [LATIN SMALL LETTER Z WITH SWASH TAIL] |
| 3040 | +"\u0240" => "z" |
| 3041 | + |
| 3042 | +# ʐ [LATIN SMALL LETTER Z WITH RETROFLEX HOOK] |
| 3043 | +"\u0290" => "z" |
| 3044 | + |
| 3045 | +# ʑ [LATIN SMALL LETTER Z WITH CURL] |
| 3046 | +"\u0291" => "z" |
| 3047 | + |
| 3048 | +# ᵶ [LATIN SMALL LETTER Z WITH MIDDLE TILDE] |
| 3049 | +"\u1D76" => "z" |
| 3050 | + |
| 3051 | +# ᶎ [LATIN SMALL LETTER Z WITH PALATAL HOOK] |
| 3052 | +"\u1D8E" => "z" |
| 3053 | + |
| 3054 | +# ẑ [LATIN SMALL LETTER Z WITH CIRCUMFLEX] |
| 3055 | +"\u1E91" => "z" |
| 3056 | + |
| 3057 | +# ẓ [LATIN SMALL LETTER Z WITH DOT BELOW] |
| 3058 | +"\u1E93" => "z" |
| 3059 | + |
| 3060 | +# ẕ [LATIN SMALL LETTER Z WITH LINE BELOW] |
| 3061 | +"\u1E95" => "z" |
| 3062 | + |
| 3063 | +# ⓩ [CIRCLED LATIN SMALL LETTER Z] |
| 3064 | +"\u24E9" => "z" |
| 3065 | + |
| 3066 | +# ⱬ [LATIN SMALL LETTER Z WITH DESCENDER] |
| 3067 | +"\u2C6C" => "z" |
| 3068 | + |
| 3069 | +# ꝣ [LATIN SMALL LETTER VISIGOTHIC Z] |
| 3070 | +"\uA763" => "z" |
| 3071 | + |
| 3072 | +# z [FULLWIDTH LATIN SMALL LETTER Z] |
| 3073 | +"\uFF5A" => "z" |
| 3074 | + |
| 3075 | +# ⒵ [PARENTHESIZED LATIN SMALL LETTER Z] |
| 3076 | +"\u24B5" => "(z)" |
| 3077 | + |
| 3078 | +# ⁰ [SUPERSCRIPT ZERO] |
| 3079 | +"\u2070" => "0" |
| 3080 | + |
| 3081 | +# ₀ [SUBSCRIPT ZERO] |
| 3082 | +"\u2080" => "0" |
| 3083 | + |
| 3084 | +# ⓪ [CIRCLED DIGIT ZERO] |
| 3085 | +"\u24EA" => "0" |
| 3086 | + |
| 3087 | +# ⓿ [NEGATIVE CIRCLED DIGIT ZERO] |
| 3088 | +"\u24FF" => "0" |
| 3089 | + |
| 3090 | +# 0 [FULLWIDTH DIGIT ZERO] |
| 3091 | +"\uFF10" => "0" |
| 3092 | + |
| 3093 | +# ¹ [SUPERSCRIPT ONE] |
| 3094 | +"\u00B9" => "1" |
| 3095 | + |
| 3096 | +# ₁ [SUBSCRIPT ONE] |
| 3097 | +"\u2081" => "1" |
| 3098 | + |
| 3099 | +# ① [CIRCLED DIGIT ONE] |
| 3100 | +"\u2460" => "1" |
| 3101 | + |
| 3102 | +# ⓵ [DOUBLE CIRCLED DIGIT ONE] |
| 3103 | +"\u24F5" => "1" |
| 3104 | + |
| 3105 | +# ❶ [DINGBAT NEGATIVE CIRCLED DIGIT ONE] |
| 3106 | +"\u2776" => "1" |
| 3107 | + |
| 3108 | +# ➀ [DINGBAT CIRCLED SANS-SERIF DIGIT ONE] |
| 3109 | +"\u2780" => "1" |
| 3110 | + |
| 3111 | +# ➊ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE] |
| 3112 | +"\u278A" => "1" |
| 3113 | + |
| 3114 | +# 1 [FULLWIDTH DIGIT ONE] |
| 3115 | +"\uFF11" => "1" |
| 3116 | + |
| 3117 | +# ⒈ [DIGIT ONE FULL STOP] |
| 3118 | +"\u2488" => "1." |
| 3119 | + |
| 3120 | +# ⑴ [PARENTHESIZED DIGIT ONE] |
| 3121 | +"\u2474" => "(1)" |
| 3122 | + |
| 3123 | +# ² [SUPERSCRIPT TWO] |
| 3124 | +"\u00B2" => "2" |
| 3125 | + |
| 3126 | +# ₂ [SUBSCRIPT TWO] |
| 3127 | +"\u2082" => "2" |
| 3128 | + |
| 3129 | +# ② [CIRCLED DIGIT TWO] |
| 3130 | +"\u2461" => "2" |
| 3131 | + |
| 3132 | +# ⓶ [DOUBLE CIRCLED DIGIT TWO] |
| 3133 | +"\u24F6" => "2" |
| 3134 | + |
| 3135 | +# ❷ [DINGBAT NEGATIVE CIRCLED DIGIT TWO] |
| 3136 | +"\u2777" => "2" |
| 3137 | + |
| 3138 | +# ➁ [DINGBAT CIRCLED SANS-SERIF DIGIT TWO] |
| 3139 | +"\u2781" => "2" |
| 3140 | + |
| 3141 | +# ➋ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO] |
| 3142 | +"\u278B" => "2" |
| 3143 | + |
| 3144 | +# 2 [FULLWIDTH DIGIT TWO] |
| 3145 | +"\uFF12" => "2" |
| 3146 | + |
| 3147 | +# ⒉ [DIGIT TWO FULL STOP] |
| 3148 | +"\u2489" => "2." |
| 3149 | + |
| 3150 | +# ⑵ [PARENTHESIZED DIGIT TWO] |
| 3151 | +"\u2475" => "(2)" |
| 3152 | + |
| 3153 | +# ³ [SUPERSCRIPT THREE] |
| 3154 | +"\u00B3" => "3" |
| 3155 | + |
| 3156 | +# ₃ [SUBSCRIPT THREE] |
| 3157 | +"\u2083" => "3" |
| 3158 | + |
| 3159 | +# ③ [CIRCLED DIGIT THREE] |
| 3160 | +"\u2462" => "3" |
| 3161 | + |
| 3162 | +# ⓷ [DOUBLE CIRCLED DIGIT THREE] |
| 3163 | +"\u24F7" => "3" |
| 3164 | + |
| 3165 | +# ❸ [DINGBAT NEGATIVE CIRCLED DIGIT THREE] |
| 3166 | +"\u2778" => "3" |
| 3167 | + |
| 3168 | +# ➂ [DINGBAT CIRCLED SANS-SERIF DIGIT THREE] |
| 3169 | +"\u2782" => "3" |
| 3170 | + |
| 3171 | +# ➌ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE] |
| 3172 | +"\u278C" => "3" |
| 3173 | + |
| 3174 | +# 3 [FULLWIDTH DIGIT THREE] |
| 3175 | +"\uFF13" => "3" |
| 3176 | + |
| 3177 | +# ⒊ [DIGIT THREE FULL STOP] |
| 3178 | +"\u248A" => "3." |
| 3179 | + |
| 3180 | +# ⑶ [PARENTHESIZED DIGIT THREE] |
| 3181 | +"\u2476" => "(3)" |
| 3182 | + |
| 3183 | +# ⁴ [SUPERSCRIPT FOUR] |
| 3184 | +"\u2074" => "4" |
| 3185 | + |
| 3186 | +# ₄ [SUBSCRIPT FOUR] |
| 3187 | +"\u2084" => "4" |
| 3188 | + |
| 3189 | +# ④ [CIRCLED DIGIT FOUR] |
| 3190 | +"\u2463" => "4" |
| 3191 | + |
| 3192 | +# ⓸ [DOUBLE CIRCLED DIGIT FOUR] |
| 3193 | +"\u24F8" => "4" |
| 3194 | + |
| 3195 | +# ❹ [DINGBAT NEGATIVE CIRCLED DIGIT FOUR] |
| 3196 | +"\u2779" => "4" |
| 3197 | + |
| 3198 | +# ➃ [DINGBAT CIRCLED SANS-SERIF DIGIT FOUR] |
| 3199 | +"\u2783" => "4" |
| 3200 | + |
| 3201 | +# ➍ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR] |
| 3202 | +"\u278D" => "4" |
| 3203 | + |
| 3204 | +# 4 [FULLWIDTH DIGIT FOUR] |
| 3205 | +"\uFF14" => "4" |
| 3206 | + |
| 3207 | +# ⒋ [DIGIT FOUR FULL STOP] |
| 3208 | +"\u248B" => "4." |
| 3209 | + |
| 3210 | +# ⑷ [PARENTHESIZED DIGIT FOUR] |
| 3211 | +"\u2477" => "(4)" |
| 3212 | + |
| 3213 | +# ⁵ [SUPERSCRIPT FIVE] |
| 3214 | +"\u2075" => "5" |
| 3215 | + |
| 3216 | +# ₅ [SUBSCRIPT FIVE] |
| 3217 | +"\u2085" => "5" |
| 3218 | + |
| 3219 | +# ⑤ [CIRCLED DIGIT FIVE] |
| 3220 | +"\u2464" => "5" |
| 3221 | + |
| 3222 | +# ⓹ [DOUBLE CIRCLED DIGIT FIVE] |
| 3223 | +"\u24F9" => "5" |
| 3224 | + |
| 3225 | +# ❺ [DINGBAT NEGATIVE CIRCLED DIGIT FIVE] |
| 3226 | +"\u277A" => "5" |
| 3227 | + |
| 3228 | +# ➄ [DINGBAT CIRCLED SANS-SERIF DIGIT FIVE] |
| 3229 | +"\u2784" => "5" |
| 3230 | + |
| 3231 | +# ➎ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE] |
| 3232 | +"\u278E" => "5" |
| 3233 | + |
| 3234 | +# 5 [FULLWIDTH DIGIT FIVE] |
| 3235 | +"\uFF15" => "5" |
| 3236 | + |
| 3237 | +# ⒌ [DIGIT FIVE FULL STOP] |
| 3238 | +"\u248C" => "5." |
| 3239 | + |
| 3240 | +# ⑸ [PARENTHESIZED DIGIT FIVE] |
| 3241 | +"\u2478" => "(5)" |
| 3242 | + |
| 3243 | +# ⁶ [SUPERSCRIPT SIX] |
| 3244 | +"\u2076" => "6" |
| 3245 | + |
| 3246 | +# ₆ [SUBSCRIPT SIX] |
| 3247 | +"\u2086" => "6" |
| 3248 | + |
| 3249 | +# ⑥ [CIRCLED DIGIT SIX] |
| 3250 | +"\u2465" => "6" |
| 3251 | + |
| 3252 | +# ⓺ [DOUBLE CIRCLED DIGIT SIX] |
| 3253 | +"\u24FA" => "6" |
| 3254 | + |
| 3255 | +# ❻ [DINGBAT NEGATIVE CIRCLED DIGIT SIX] |
| 3256 | +"\u277B" => "6" |
| 3257 | + |
| 3258 | +# ➅ [DINGBAT CIRCLED SANS-SERIF DIGIT SIX] |
| 3259 | +"\u2785" => "6" |
| 3260 | + |
| 3261 | +# ➏ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX] |
| 3262 | +"\u278F" => "6" |
| 3263 | + |
| 3264 | +# 6 [FULLWIDTH DIGIT SIX] |
| 3265 | +"\uFF16" => "6" |
| 3266 | + |
| 3267 | +# ⒍ [DIGIT SIX FULL STOP] |
| 3268 | +"\u248D" => "6." |
| 3269 | + |
| 3270 | +# ⑹ [PARENTHESIZED DIGIT SIX] |
| 3271 | +"\u2479" => "(6)" |
| 3272 | + |
| 3273 | +# ⁷ [SUPERSCRIPT SEVEN] |
| 3274 | +"\u2077" => "7" |
| 3275 | + |
| 3276 | +# ₇ [SUBSCRIPT SEVEN] |
| 3277 | +"\u2087" => "7" |
| 3278 | + |
| 3279 | +# ⑦ [CIRCLED DIGIT SEVEN] |
| 3280 | +"\u2466" => "7" |
| 3281 | + |
| 3282 | +# ⓻ [DOUBLE CIRCLED DIGIT SEVEN] |
| 3283 | +"\u24FB" => "7" |
| 3284 | + |
| 3285 | +# ❼ [DINGBAT NEGATIVE CIRCLED DIGIT SEVEN] |
| 3286 | +"\u277C" => "7" |
| 3287 | + |
| 3288 | +# ➆ [DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN] |
| 3289 | +"\u2786" => "7" |
| 3290 | + |
| 3291 | +# ➐ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN] |
| 3292 | +"\u2790" => "7" |
| 3293 | + |
| 3294 | +# 7 [FULLWIDTH DIGIT SEVEN] |
| 3295 | +"\uFF17" => "7" |
| 3296 | + |
| 3297 | +# ⒎ [DIGIT SEVEN FULL STOP] |
| 3298 | +"\u248E" => "7." |
| 3299 | + |
| 3300 | +# ⑺ [PARENTHESIZED DIGIT SEVEN] |
| 3301 | +"\u247A" => "(7)" |
| 3302 | + |
| 3303 | +# ⁸ [SUPERSCRIPT EIGHT] |
| 3304 | +"\u2078" => "8" |
| 3305 | + |
| 3306 | +# ₈ [SUBSCRIPT EIGHT] |
| 3307 | +"\u2088" => "8" |
| 3308 | + |
| 3309 | +# ⑧ [CIRCLED DIGIT EIGHT] |
| 3310 | +"\u2467" => "8" |
| 3311 | + |
| 3312 | +# ⓼ [DOUBLE CIRCLED DIGIT EIGHT] |
| 3313 | +"\u24FC" => "8" |
| 3314 | + |
| 3315 | +# ❽ [DINGBAT NEGATIVE CIRCLED DIGIT EIGHT] |
| 3316 | +"\u277D" => "8" |
| 3317 | + |
| 3318 | +# ➇ [DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT] |
| 3319 | +"\u2787" => "8" |
| 3320 | + |
| 3321 | +# ➑ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT] |
| 3322 | +"\u2791" => "8" |
| 3323 | + |
| 3324 | +# 8 [FULLWIDTH DIGIT EIGHT] |
| 3325 | +"\uFF18" => "8" |
| 3326 | + |
| 3327 | +# ⒏ [DIGIT EIGHT FULL STOP] |
| 3328 | +"\u248F" => "8." |
| 3329 | + |
| 3330 | +# ⑻ [PARENTHESIZED DIGIT EIGHT] |
| 3331 | +"\u247B" => "(8)" |
| 3332 | + |
| 3333 | +# ⁹ [SUPERSCRIPT NINE] |
| 3334 | +"\u2079" => "9" |
| 3335 | + |
| 3336 | +# ₉ [SUBSCRIPT NINE] |
| 3337 | +"\u2089" => "9" |
| 3338 | + |
| 3339 | +# ⑨ [CIRCLED DIGIT NINE] |
| 3340 | +"\u2468" => "9" |
| 3341 | + |
| 3342 | +# ⓽ [DOUBLE CIRCLED DIGIT NINE] |
| 3343 | +"\u24FD" => "9" |
| 3344 | + |
| 3345 | +# ❾ [DINGBAT NEGATIVE CIRCLED DIGIT NINE] |
| 3346 | +"\u277E" => "9" |
| 3347 | + |
| 3348 | +# ➈ [DINGBAT CIRCLED SANS-SERIF DIGIT NINE] |
| 3349 | +"\u2788" => "9" |
| 3350 | + |
| 3351 | +# ➒ [DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE] |
| 3352 | +"\u2792" => "9" |
| 3353 | + |
| 3354 | +# 9 [FULLWIDTH DIGIT NINE] |
| 3355 | +"\uFF19" => "9" |
| 3356 | + |
| 3357 | +# ⒐ [DIGIT NINE FULL STOP] |
| 3358 | +"\u2490" => "9." |
| 3359 | + |
| 3360 | +# ⑼ [PARENTHESIZED DIGIT NINE] |
| 3361 | +"\u247C" => "(9)" |
| 3362 | + |
| 3363 | +# ⑩ [CIRCLED NUMBER TEN] |
| 3364 | +"\u2469" => "10" |
| 3365 | + |
| 3366 | +# ⓾ [DOUBLE CIRCLED NUMBER TEN] |
| 3367 | +"\u24FE" => "10" |
| 3368 | + |
| 3369 | +# ❿ [DINGBAT NEGATIVE CIRCLED NUMBER TEN] |
| 3370 | +"\u277F" => "10" |
| 3371 | + |
| 3372 | +# ➉ [DINGBAT CIRCLED SANS-SERIF NUMBER TEN] |
| 3373 | +"\u2789" => "10" |
| 3374 | + |
| 3375 | +# ➓ [DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN] |
| 3376 | +"\u2793" => "10" |
| 3377 | + |
| 3378 | +# ⒑ [NUMBER TEN FULL STOP] |
| 3379 | +"\u2491" => "10." |
| 3380 | + |
| 3381 | +# ⑽ [PARENTHESIZED NUMBER TEN] |
| 3382 | +"\u247D" => "(10)" |
| 3383 | + |
| 3384 | +# ⑪ [CIRCLED NUMBER ELEVEN] |
| 3385 | +"\u246A" => "11" |
| 3386 | + |
| 3387 | +# ⓫ [NEGATIVE CIRCLED NUMBER ELEVEN] |
| 3388 | +"\u24EB" => "11" |
| 3389 | + |
| 3390 | +# ⒒ [NUMBER ELEVEN FULL STOP] |
| 3391 | +"\u2492" => "11." |
| 3392 | + |
| 3393 | +# ⑾ [PARENTHESIZED NUMBER ELEVEN] |
| 3394 | +"\u247E" => "(11)" |
| 3395 | + |
| 3396 | +# ⑫ [CIRCLED NUMBER TWELVE] |
| 3397 | +"\u246B" => "12" |
| 3398 | + |
| 3399 | +# ⓬ [NEGATIVE CIRCLED NUMBER TWELVE] |
| 3400 | +"\u24EC" => "12" |
| 3401 | + |
| 3402 | +# ⒓ [NUMBER TWELVE FULL STOP] |
| 3403 | +"\u2493" => "12." |
| 3404 | + |
| 3405 | +# ⑿ [PARENTHESIZED NUMBER TWELVE] |
| 3406 | +"\u247F" => "(12)" |
| 3407 | + |
| 3408 | +# ⑬ [CIRCLED NUMBER THIRTEEN] |
| 3409 | +"\u246C" => "13" |
| 3410 | + |
| 3411 | +# ⓭ [NEGATIVE CIRCLED NUMBER THIRTEEN] |
| 3412 | +"\u24ED" => "13" |
| 3413 | + |
| 3414 | +# ⒔ [NUMBER THIRTEEN FULL STOP] |
| 3415 | +"\u2494" => "13." |
| 3416 | + |
| 3417 | +# ⒀ [PARENTHESIZED NUMBER THIRTEEN] |
| 3418 | +"\u2480" => "(13)" |
| 3419 | + |
| 3420 | +# ⑭ [CIRCLED NUMBER FOURTEEN] |
| 3421 | +"\u246D" => "14" |
| 3422 | + |
| 3423 | +# ⓮ [NEGATIVE CIRCLED NUMBER FOURTEEN] |
| 3424 | +"\u24EE" => "14" |
| 3425 | + |
| 3426 | +# ⒕ [NUMBER FOURTEEN FULL STOP] |
| 3427 | +"\u2495" => "14." |
| 3428 | + |
| 3429 | +# ⒁ [PARENTHESIZED NUMBER FOURTEEN] |
| 3430 | +"\u2481" => "(14)" |
| 3431 | + |
| 3432 | +# ⑮ [CIRCLED NUMBER FIFTEEN] |
| 3433 | +"\u246E" => "15" |
| 3434 | + |
| 3435 | +# ⓯ [NEGATIVE CIRCLED NUMBER FIFTEEN] |
| 3436 | +"\u24EF" => "15" |
| 3437 | + |
| 3438 | +# ⒖ [NUMBER FIFTEEN FULL STOP] |
| 3439 | +"\u2496" => "15." |
| 3440 | + |
| 3441 | +# ⒂ [PARENTHESIZED NUMBER FIFTEEN] |
| 3442 | +"\u2482" => "(15)" |
| 3443 | + |
| 3444 | +# ⑯ [CIRCLED NUMBER SIXTEEN] |
| 3445 | +"\u246F" => "16" |
| 3446 | + |
| 3447 | +# ⓰ [NEGATIVE CIRCLED NUMBER SIXTEEN] |
| 3448 | +"\u24F0" => "16" |
| 3449 | + |
| 3450 | +# ⒗ [NUMBER SIXTEEN FULL STOP] |
| 3451 | +"\u2497" => "16." |
| 3452 | + |
| 3453 | +# ⒃ [PARENTHESIZED NUMBER SIXTEEN] |
| 3454 | +"\u2483" => "(16)" |
| 3455 | + |
| 3456 | +# ⑰ [CIRCLED NUMBER SEVENTEEN] |
| 3457 | +"\u2470" => "17" |
| 3458 | + |
| 3459 | +# ⓱ [NEGATIVE CIRCLED NUMBER SEVENTEEN] |
| 3460 | +"\u24F1" => "17" |
| 3461 | + |
| 3462 | +# ⒘ [NUMBER SEVENTEEN FULL STOP] |
| 3463 | +"\u2498" => "17." |
| 3464 | + |
| 3465 | +# ⒄ [PARENTHESIZED NUMBER SEVENTEEN] |
| 3466 | +"\u2484" => "(17)" |
| 3467 | + |
| 3468 | +# ⑱ [CIRCLED NUMBER EIGHTEEN] |
| 3469 | +"\u2471" => "18" |
| 3470 | + |
| 3471 | +# ⓲ [NEGATIVE CIRCLED NUMBER EIGHTEEN] |
| 3472 | +"\u24F2" => "18" |
| 3473 | + |
| 3474 | +# ⒙ [NUMBER EIGHTEEN FULL STOP] |
| 3475 | +"\u2499" => "18." |
| 3476 | + |
| 3477 | +# ⒅ [PARENTHESIZED NUMBER EIGHTEEN] |
| 3478 | +"\u2485" => "(18)" |
| 3479 | + |
| 3480 | +# ⑲ [CIRCLED NUMBER NINETEEN] |
| 3481 | +"\u2472" => "19" |
| 3482 | + |
| 3483 | +# ⓳ [NEGATIVE CIRCLED NUMBER NINETEEN] |
| 3484 | +"\u24F3" => "19" |
| 3485 | + |
| 3486 | +# ⒚ [NUMBER NINETEEN FULL STOP] |
| 3487 | +"\u249A" => "19." |
| 3488 | + |
| 3489 | +# ⒆ [PARENTHESIZED NUMBER NINETEEN] |
| 3490 | +"\u2486" => "(19)" |
| 3491 | + |
| 3492 | +# ⑳ [CIRCLED NUMBER TWENTY] |
| 3493 | +"\u2473" => "20" |
| 3494 | + |
| 3495 | +# ⓴ [NEGATIVE CIRCLED NUMBER TWENTY] |
| 3496 | +"\u24F4" => "20" |
| 3497 | + |
| 3498 | +# ⒛ [NUMBER TWENTY FULL STOP] |
| 3499 | +"\u249B" => "20." |
| 3500 | + |
| 3501 | +# ⒇ [PARENTHESIZED NUMBER TWENTY] |
| 3502 | +"\u2487" => "(20)" |
| 3503 | + |
| 3504 | +# « [LEFT-POINTING DOUBLE ANGLE QUOTATION MARK] |
| 3505 | +"\u00AB" => "\"" |
| 3506 | + |
| 3507 | +# » [RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK] |
| 3508 | +"\u00BB" => "\"" |
| 3509 | + |
| 3510 | +# “ [LEFT DOUBLE QUOTATION MARK] |
| 3511 | +"\u201C" => "\"" |
| 3512 | + |
| 3513 | +# ” [RIGHT DOUBLE QUOTATION MARK] |
| 3514 | +"\u201D" => "\"" |
| 3515 | + |
| 3516 | +# „ [DOUBLE LOW-9 QUOTATION MARK] |
| 3517 | +"\u201E" => "\"" |
| 3518 | + |
| 3519 | +# ″ [DOUBLE PRIME] |
| 3520 | +"\u2033" => "\"" |
| 3521 | + |
| 3522 | +# ‶ [REVERSED DOUBLE PRIME] |
| 3523 | +"\u2036" => "\"" |
| 3524 | + |
| 3525 | +# ❝ [HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT] |
| 3526 | +"\u275D" => "\"" |
| 3527 | + |
| 3528 | +# ❞ [HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT] |
| 3529 | +"\u275E" => "\"" |
| 3530 | + |
| 3531 | +# ❮ [HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT] |
| 3532 | +"\u276E" => "\"" |
| 3533 | + |
| 3534 | +# ❯ [HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT] |
| 3535 | +"\u276F" => "\"" |
| 3536 | + |
| 3537 | +# " [FULLWIDTH QUOTATION MARK] |
| 3538 | +"\uFF02" => "\"" |
| 3539 | + |
| 3540 | +# ‘ [LEFT SINGLE QUOTATION MARK] |
| 3541 | +"\u2018" => "\'" |
| 3542 | + |
| 3543 | +# ’ [RIGHT SINGLE QUOTATION MARK] |
| 3544 | +"\u2019" => "\'" |
| 3545 | + |
| 3546 | +# ‚ [SINGLE LOW-9 QUOTATION MARK] |
| 3547 | +"\u201A" => "\'" |
| 3548 | + |
| 3549 | +# ‛ [SINGLE HIGH-REVERSED-9 QUOTATION MARK] |
| 3550 | +"\u201B" => "\'" |
| 3551 | + |
| 3552 | +# ′ [PRIME] |
| 3553 | +"\u2032" => "\'" |
| 3554 | + |
| 3555 | +# ‵ [REVERSED PRIME] |
| 3556 | +"\u2035" => "\'" |
| 3557 | + |
| 3558 | +# ‹ [SINGLE LEFT-POINTING ANGLE QUOTATION MARK] |
| 3559 | +"\u2039" => "\'" |
| 3560 | + |
| 3561 | +# › [SINGLE RIGHT-POINTING ANGLE QUOTATION MARK] |
| 3562 | +"\u203A" => "\'" |
| 3563 | + |
| 3564 | +# ❛ [HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT] |
| 3565 | +"\u275B" => "\'" |
| 3566 | + |
| 3567 | +# ❜ [HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT] |
| 3568 | +"\u275C" => "\'" |
| 3569 | + |
| 3570 | +# ' [FULLWIDTH APOSTROPHE] |
| 3571 | +"\uFF07" => "\'" |
| 3572 | + |
| 3573 | +# ‐ [HYPHEN] |
| 3574 | +"\u2010" => "-" |
| 3575 | + |
| 3576 | +# ‑ [NON-BREAKING HYPHEN] |
| 3577 | +"\u2011" => "-" |
| 3578 | + |
| 3579 | +# ‒ [FIGURE DASH] |
| 3580 | +"\u2012" => "-" |
| 3581 | + |
| 3582 | +# – [EN DASH] |
| 3583 | +"\u2013" => "-" |
| 3584 | + |
| 3585 | +# — [EM DASH] |
| 3586 | +"\u2014" => "-" |
| 3587 | + |
| 3588 | +# ⁻ [SUPERSCRIPT MINUS] |
| 3589 | +"\u207B" => "-" |
| 3590 | + |
| 3591 | +# ₋ [SUBSCRIPT MINUS] |
| 3592 | +"\u208B" => "-" |
| 3593 | + |
| 3594 | +# - [FULLWIDTH HYPHEN-MINUS] |
| 3595 | +"\uFF0D" => "-" |
| 3596 | + |
| 3597 | +# ⁅ [LEFT SQUARE BRACKET WITH QUILL] |
| 3598 | +"\u2045" => "[" |
| 3599 | + |
| 3600 | +# ❲ [LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT] |
| 3601 | +"\u2772" => "[" |
| 3602 | + |
| 3603 | +# [ [FULLWIDTH LEFT SQUARE BRACKET] |
| 3604 | +"\uFF3B" => "[" |
| 3605 | + |
| 3606 | +# ⁆ [RIGHT SQUARE BRACKET WITH QUILL] |
| 3607 | +"\u2046" => "]" |
| 3608 | + |
| 3609 | +# ❳ [LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT] |
| 3610 | +"\u2773" => "]" |
| 3611 | + |
| 3612 | +# ] [FULLWIDTH RIGHT SQUARE BRACKET] |
| 3613 | +"\uFF3D" => "]" |
| 3614 | + |
| 3615 | +# ⁽ [SUPERSCRIPT LEFT PARENTHESIS] |
| 3616 | +"\u207D" => "(" |
| 3617 | + |
| 3618 | +# ₍ [SUBSCRIPT LEFT PARENTHESIS] |
| 3619 | +"\u208D" => "(" |
| 3620 | + |
| 3621 | +# ❨ [MEDIUM LEFT PARENTHESIS ORNAMENT] |
| 3622 | +"\u2768" => "(" |
| 3623 | + |
| 3624 | +# ❪ [MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT] |
| 3625 | +"\u276A" => "(" |
| 3626 | + |
| 3627 | +# ( [FULLWIDTH LEFT PARENTHESIS] |
| 3628 | +"\uFF08" => "(" |
| 3629 | + |
| 3630 | +# ⸨ [LEFT DOUBLE PARENTHESIS] |
| 3631 | +"\u2E28" => "((" |
| 3632 | + |
| 3633 | +# ⁾ [SUPERSCRIPT RIGHT PARENTHESIS] |
| 3634 | +"\u207E" => ")" |
| 3635 | + |
| 3636 | +# ₎ [SUBSCRIPT RIGHT PARENTHESIS] |
| 3637 | +"\u208E" => ")" |
| 3638 | + |
| 3639 | +# ❩ [MEDIUM RIGHT PARENTHESIS ORNAMENT] |
| 3640 | +"\u2769" => ")" |
| 3641 | + |
| 3642 | +# ❫ [MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT] |
| 3643 | +"\u276B" => ")" |
| 3644 | + |
| 3645 | +# ) [FULLWIDTH RIGHT PARENTHESIS] |
| 3646 | +"\uFF09" => ")" |
| 3647 | + |
| 3648 | +# ⸩ [RIGHT DOUBLE PARENTHESIS] |
| 3649 | +"\u2E29" => "))" |
| 3650 | + |
| 3651 | +# ❬ [MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT] |
| 3652 | +"\u276C" => "<" |
| 3653 | + |
| 3654 | +# ❰ [HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT] |
| 3655 | +"\u2770" => "<" |
| 3656 | + |
| 3657 | +# < [FULLWIDTH LESS-THAN SIGN] |
| 3658 | +"\uFF1C" => "<" |
| 3659 | + |
| 3660 | +# ❭ [MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT] |
| 3661 | +"\u276D" => ">" |
| 3662 | + |
| 3663 | +# ❱ [HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT] |
| 3664 | +"\u2771" => ">" |
| 3665 | + |
| 3666 | +# > [FULLWIDTH GREATER-THAN SIGN] |
| 3667 | +"\uFF1E" => ">" |
| 3668 | + |
| 3669 | +# ❴ [MEDIUM LEFT CURLY BRACKET ORNAMENT] |
| 3670 | +"\u2774" => "{" |
| 3671 | + |
| 3672 | +# { [FULLWIDTH LEFT CURLY BRACKET] |
| 3673 | +"\uFF5B" => "{" |
| 3674 | + |
| 3675 | +# ❵ [MEDIUM RIGHT CURLY BRACKET ORNAMENT] |
| 3676 | +"\u2775" => "}" |
| 3677 | + |
| 3678 | +# } [FULLWIDTH RIGHT CURLY BRACKET] |
| 3679 | +"\uFF5D" => "}" |
| 3680 | + |
| 3681 | +# ⁺ [SUPERSCRIPT PLUS SIGN] |
| 3682 | +"\u207A" => "+" |
| 3683 | + |
| 3684 | +# ₊ [SUBSCRIPT PLUS SIGN] |
| 3685 | +"\u208A" => "+" |
| 3686 | + |
| 3687 | +# + [FULLWIDTH PLUS SIGN] |
| 3688 | +"\uFF0B" => "+" |
| 3689 | + |
| 3690 | +# ⁼ [SUPERSCRIPT EQUALS SIGN] |
| 3691 | +"\u207C" => "=" |
| 3692 | + |
| 3693 | +# ₌ [SUBSCRIPT EQUALS SIGN] |
| 3694 | +"\u208C" => "=" |
| 3695 | + |
| 3696 | +# = [FULLWIDTH EQUALS SIGN] |
| 3697 | +"\uFF1D" => "=" |
| 3698 | + |
| 3699 | +# ! [FULLWIDTH EXCLAMATION MARK] |
| 3700 | +"\uFF01" => "!" |
| 3701 | + |
| 3702 | +# ‼ [DOUBLE EXCLAMATION MARK] |
| 3703 | +"\u203C" => "!!" |
| 3704 | + |
| 3705 | +# ⁉ [EXCLAMATION QUESTION MARK] |
| 3706 | +"\u2049" => "!?" |
| 3707 | + |
| 3708 | +# # [FULLWIDTH NUMBER SIGN] |
| 3709 | +"\uFF03" => "#" |
| 3710 | + |
| 3711 | +# $ [FULLWIDTH DOLLAR SIGN] |
| 3712 | +"\uFF04" => "$" |
| 3713 | + |
| 3714 | +# ⁒ [COMMERCIAL MINUS SIGN] |
| 3715 | +"\u2052" => "%" |
| 3716 | + |
| 3717 | +# % [FULLWIDTH PERCENT SIGN] |
| 3718 | +"\uFF05" => "%" |
| 3719 | + |
| 3720 | +# & [FULLWIDTH AMPERSAND] |
| 3721 | +"\uFF06" => "&" |
| 3722 | + |
| 3723 | +# ⁎ [LOW ASTERISK] |
| 3724 | +"\u204E" => "*" |
| 3725 | + |
| 3726 | +# * [FULLWIDTH ASTERISK] |
| 3727 | +"\uFF0A" => "*" |
| 3728 | + |
| 3729 | +# , [FULLWIDTH COMMA] |
| 3730 | +"\uFF0C" => "," |
| 3731 | + |
| 3732 | +# . [FULLWIDTH FULL STOP] |
| 3733 | +"\uFF0E" => "." |
| 3734 | + |
| 3735 | +# ⁄ [FRACTION SLASH] |
| 3736 | +"\u2044" => "/" |
| 3737 | + |
| 3738 | +# / [FULLWIDTH SOLIDUS] |
| 3739 | +"\uFF0F" => "/" |
| 3740 | + |
| 3741 | +# : [FULLWIDTH COLON] |
| 3742 | +"\uFF1A" => ":" |
| 3743 | + |
| 3744 | +# ⁏ [REVERSED SEMICOLON] |
| 3745 | +"\u204F" => ";" |
| 3746 | + |
| 3747 | +# ; [FULLWIDTH SEMICOLON] |
| 3748 | +"\uFF1B" => ";" |
| 3749 | + |
| 3750 | +# ? [FULLWIDTH QUESTION MARK] |
| 3751 | +"\uFF1F" => "?" |
| 3752 | + |
| 3753 | +# ⁇ [DOUBLE QUESTION MARK] |
| 3754 | +"\u2047" => "??" |
| 3755 | + |
| 3756 | +# ⁈ [QUESTION EXCLAMATION MARK] |
| 3757 | +"\u2048" => "?!" |
| 3758 | + |
| 3759 | +# @ [FULLWIDTH COMMERCIAL AT] |
| 3760 | +"\uFF20" => "@" |
| 3761 | + |
| 3762 | +# \ [FULLWIDTH REVERSE SOLIDUS] |
| 3763 | +"\uFF3C" => "\\" |
| 3764 | + |
| 3765 | +# ‸ [CARET] |
| 3766 | +"\u2038" => "^" |
| 3767 | + |
| 3768 | +# ^ [FULLWIDTH CIRCUMFLEX ACCENT] |
| 3769 | +"\uFF3E" => "^" |
| 3770 | + |
| 3771 | +# _ [FULLWIDTH LOW LINE] |
| 3772 | +"\uFF3F" => "_" |
| 3773 | + |
| 3774 | +# ⁓ [SWUNG DASH] |
| 3775 | +"\u2053" => "~" |
| 3776 | + |
| 3777 | +# ~ [FULLWIDTH TILDE] |
| 3778 | +"\uFF5E" => "~" |
| 3779 | + |
| 3780 | +################################################################ |
| 3781 | +# Below is the Perl script used to generate the above mappings # |
| 3782 | +# from ASCIIFoldingFilter.java: # |
| 3783 | +################################################################ |
| 3784 | +# |
| 3785 | +# #!/usr/bin/perl |
| 3786 | +# |
| 3787 | +# use warnings; |
| 3788 | +# use strict; |
| 3789 | +# |
| 3790 | +# my @source_chars = (); |
| 3791 | +# my @source_char_descriptions = (); |
| 3792 | +# my $target = ''; |
| 3793 | +# |
| 3794 | +# while (<>) { |
| 3795 | +# if (/case\s+'(\\u[A-F0-9]+)':\s*\/\/\s*(.*)/i) { |
| 3796 | +# push @source_chars, $1; |
| 3797 | +# push @source_char_descriptions, $2; |
| 3798 | +# next; |
| 3799 | +# } |
| 3800 | +# if (/output\[[^\]]+\]\s*=\s*'(\\'|\\\\|.)'/) { |
| 3801 | +# $target .= $1; |
| 3802 | +# next; |
| 3803 | +# } |
| 3804 | +# if (/break;/) { |
| 3805 | +# $target = "\\\"" if ($target eq '"'); |
| 3806 | +# for my $source_char_num (0..$#source_chars) { |
| 3807 | +# print "# $source_char_descriptions[$source_char_num]\n"; |
| 3808 | +# print "\"$source_chars[$source_char_num]\" => \"$target\"\n\n"; |
| 3809 | +# } |
| 3810 | +# @source_chars = (); |
| 3811 | +# @source_char_descriptions = (); |
| 3812 | +# $target = ''; |
| 3813 | +# } |
| 3814 | +# } |
Property changes on: trunk/extensions/SolrStore/solr-example/core0/conf/mapping-FoldToASCII.txt |
___________________________________________________________________ |
Added: svn:eol-style |
3815 | 3815 | + native |
Index: trunk/extensions/SolrStore/solr-example/core0/conf/mapping-ISOLatin1Accent.txt |
— | — | @@ -1,246 +1,246 @@ |
2 | | -# The ASF licenses this file to You under the Apache License, Version 2.0
|
3 | | -# (the "License"); you may not use this file except in compliance with
|
4 | | -# the License. You may obtain a copy of the License at
|
5 | | -#
|
6 | | -# http://www.apache.org/licenses/LICENSE-2.0
|
7 | | -#
|
8 | | -# Unless required by applicable law or agreed to in writing, software
|
9 | | -# distributed under the License is distributed on an "AS IS" BASIS,
|
10 | | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
11 | | -# See the License for the specific language governing permissions and
|
12 | | -# limitations under the License.
|
13 | | -
|
14 | | -# Syntax:
|
15 | | -# "source" => "target"
|
16 | | -# "source".length() > 0 (source cannot be empty.)
|
17 | | -# "target".length() >= 0 (target can be empty.)
|
18 | | -
|
19 | | -# example:
|
20 | | -# "À" => "A"
|
21 | | -# "\u00C0" => "A"
|
22 | | -# "\u00C0" => "\u0041"
|
23 | | -# "ß" => "ss"
|
24 | | -# "\t" => " "
|
25 | | -# "\n" => ""
|
26 | | -
|
27 | | -# À => A
|
28 | | -"\u00C0" => "A"
|
29 | | -
|
30 | | -# Á => A
|
31 | | -"\u00C1" => "A"
|
32 | | -
|
33 | | -# Â => A
|
34 | | -"\u00C2" => "A"
|
35 | | -
|
36 | | -# Ã => A
|
37 | | -"\u00C3" => "A"
|
38 | | -
|
39 | | -# Ä => A
|
40 | | -"\u00C4" => "A"
|
41 | | -
|
42 | | -# Å => A
|
43 | | -"\u00C5" => "A"
|
44 | | -
|
45 | | -# Æ => AE
|
46 | | -"\u00C6" => "AE"
|
47 | | -
|
48 | | -# Ç => C
|
49 | | -"\u00C7" => "C"
|
50 | | -
|
51 | | -# È => E
|
52 | | -"\u00C8" => "E"
|
53 | | -
|
54 | | -# É => E
|
55 | | -"\u00C9" => "E"
|
56 | | -
|
57 | | -# Ê => E
|
58 | | -"\u00CA" => "E"
|
59 | | -
|
60 | | -# Ë => E
|
61 | | -"\u00CB" => "E"
|
62 | | -
|
63 | | -# Ì => I
|
64 | | -"\u00CC" => "I"
|
65 | | -
|
66 | | -# Í => I
|
67 | | -"\u00CD" => "I"
|
68 | | -
|
69 | | -# Î => I
|
70 | | -"\u00CE" => "I"
|
71 | | -
|
72 | | -# Ï => I
|
73 | | -"\u00CF" => "I"
|
74 | | -
|
75 | | -# IJ => IJ
|
76 | | -"\u0132" => "IJ"
|
77 | | -
|
78 | | -# Ð => D
|
79 | | -"\u00D0" => "D"
|
80 | | -
|
81 | | -# Ñ => N
|
82 | | -"\u00D1" => "N"
|
83 | | -
|
84 | | -# Ò => O
|
85 | | -"\u00D2" => "O"
|
86 | | -
|
87 | | -# Ó => O
|
88 | | -"\u00D3" => "O"
|
89 | | -
|
90 | | -# Ô => O
|
91 | | -"\u00D4" => "O"
|
92 | | -
|
93 | | -# Õ => O
|
94 | | -"\u00D5" => "O"
|
95 | | -
|
96 | | -# Ö => O
|
97 | | -"\u00D6" => "O"
|
98 | | -
|
99 | | -# Ø => O
|
100 | | -"\u00D8" => "O"
|
101 | | -
|
102 | | -# Œ => OE
|
103 | | -"\u0152" => "OE"
|
104 | | -
|
105 | | -# Þ
|
106 | | -"\u00DE" => "TH"
|
107 | | -
|
108 | | -# Ù => U
|
109 | | -"\u00D9" => "U"
|
110 | | -
|
111 | | -# Ú => U
|
112 | | -"\u00DA" => "U"
|
113 | | -
|
114 | | -# Û => U
|
115 | | -"\u00DB" => "U"
|
116 | | -
|
117 | | -# Ü => U
|
118 | | -"\u00DC" => "U"
|
119 | | -
|
120 | | -# Ý => Y
|
121 | | -"\u00DD" => "Y"
|
122 | | -
|
123 | | -# Ÿ => Y
|
124 | | -"\u0178" => "Y"
|
125 | | -
|
126 | | -# à => a
|
127 | | -"\u00E0" => "a"
|
128 | | -
|
129 | | -# á => a
|
130 | | -"\u00E1" => "a"
|
131 | | -
|
132 | | -# â => a
|
133 | | -"\u00E2" => "a"
|
134 | | -
|
135 | | -# ã => a
|
136 | | -"\u00E3" => "a"
|
137 | | -
|
138 | | -# ä => a
|
139 | | -"\u00E4" => "a"
|
140 | | -
|
141 | | -# å => a
|
142 | | -"\u00E5" => "a"
|
143 | | -
|
144 | | -# æ => ae
|
145 | | -"\u00E6" => "ae"
|
146 | | -
|
147 | | -# ç => c
|
148 | | -"\u00E7" => "c"
|
149 | | -
|
150 | | -# è => e
|
151 | | -"\u00E8" => "e"
|
152 | | -
|
153 | | -# é => e
|
154 | | -"\u00E9" => "e"
|
155 | | -
|
156 | | -# ê => e
|
157 | | -"\u00EA" => "e"
|
158 | | -
|
159 | | -# ë => e
|
160 | | -"\u00EB" => "e"
|
161 | | -
|
162 | | -# ì => i
|
163 | | -"\u00EC" => "i"
|
164 | | -
|
165 | | -# í => i
|
166 | | -"\u00ED" => "i"
|
167 | | -
|
168 | | -# î => i
|
169 | | -"\u00EE" => "i"
|
170 | | -
|
171 | | -# ï => i
|
172 | | -"\u00EF" => "i"
|
173 | | -
|
174 | | -# ij => ij
|
175 | | -"\u0133" => "ij"
|
176 | | -
|
177 | | -# ð => d
|
178 | | -"\u00F0" => "d"
|
179 | | -
|
180 | | -# ñ => n
|
181 | | -"\u00F1" => "n"
|
182 | | -
|
183 | | -# ò => o
|
184 | | -"\u00F2" => "o"
|
185 | | -
|
186 | | -# ó => o
|
187 | | -"\u00F3" => "o"
|
188 | | -
|
189 | | -# ô => o
|
190 | | -"\u00F4" => "o"
|
191 | | -
|
192 | | -# õ => o
|
193 | | -"\u00F5" => "o"
|
194 | | -
|
195 | | -# ö => o
|
196 | | -"\u00F6" => "o"
|
197 | | -
|
198 | | -# ø => o
|
199 | | -"\u00F8" => "o"
|
200 | | -
|
201 | | -# œ => oe
|
202 | | -"\u0153" => "oe"
|
203 | | -
|
204 | | -# ß => ss
|
205 | | -"\u00DF" => "ss"
|
206 | | -
|
207 | | -# þ => th
|
208 | | -"\u00FE" => "th"
|
209 | | -
|
210 | | -# ù => u
|
211 | | -"\u00F9" => "u"
|
212 | | -
|
213 | | -# ú => u
|
214 | | -"\u00FA" => "u"
|
215 | | -
|
216 | | -# û => u
|
217 | | -"\u00FB" => "u"
|
218 | | -
|
219 | | -# ü => u
|
220 | | -"\u00FC" => "u"
|
221 | | -
|
222 | | -# ý => y
|
223 | | -"\u00FD" => "y"
|
224 | | -
|
225 | | -# ÿ => y
|
226 | | -"\u00FF" => "y"
|
227 | | -
|
228 | | -# ff => ff
|
229 | | -"\uFB00" => "ff"
|
230 | | -
|
231 | | -# fi => fi
|
232 | | -"\uFB01" => "fi"
|
233 | | -
|
234 | | -# fl => fl
|
235 | | -"\uFB02" => "fl"
|
236 | | -
|
237 | | -# ffi => ffi
|
238 | | -"\uFB03" => "ffi"
|
239 | | -
|
240 | | -# ffl => ffl
|
241 | | -"\uFB04" => "ffl"
|
242 | | -
|
243 | | -# ſt => ft
|
244 | | -"\uFB05" => "ft"
|
245 | | -
|
246 | | -# st => st
|
247 | | -"\uFB06" => "st"
|
| 2 | +# The ASF licenses this file to You under the Apache License, Version 2.0 |
| 3 | +# (the "License"); you may not use this file except in compliance with |
| 4 | +# the License. You may obtain a copy of the License at |
| 5 | +# |
| 6 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 7 | +# |
| 8 | +# Unless required by applicable law or agreed to in writing, software |
| 9 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 10 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 11 | +# See the License for the specific language governing permissions and |
| 12 | +# limitations under the License. |
| 13 | + |
| 14 | +# Syntax: |
| 15 | +# "source" => "target" |
| 16 | +# "source".length() > 0 (source cannot be empty.) |
| 17 | +# "target".length() >= 0 (target can be empty.) |
| 18 | + |
| 19 | +# example: |
| 20 | +# "À" => "A" |
| 21 | +# "\u00C0" => "A" |
| 22 | +# "\u00C0" => "\u0041" |
| 23 | +# "ß" => "ss" |
| 24 | +# "\t" => " " |
| 25 | +# "\n" => "" |
| 26 | + |
| 27 | +# À => A |
| 28 | +"\u00C0" => "A" |
| 29 | + |
| 30 | +# Á => A |
| 31 | +"\u00C1" => "A" |
| 32 | + |
| 33 | +# Â => A |
| 34 | +"\u00C2" => "A" |
| 35 | + |
| 36 | +# Ã => A |
| 37 | +"\u00C3" => "A" |
| 38 | + |
| 39 | +# Ä => A |
| 40 | +"\u00C4" => "A" |
| 41 | + |
| 42 | +# Å => A |
| 43 | +"\u00C5" => "A" |
| 44 | + |
| 45 | +# Æ => AE |
| 46 | +"\u00C6" => "AE" |
| 47 | + |
| 48 | +# Ç => C |
| 49 | +"\u00C7" => "C" |
| 50 | + |
| 51 | +# È => E |
| 52 | +"\u00C8" => "E" |
| 53 | + |
| 54 | +# É => E |
| 55 | +"\u00C9" => "E" |
| 56 | + |
| 57 | +# Ê => E |
| 58 | +"\u00CA" => "E" |
| 59 | + |
| 60 | +# Ë => E |
| 61 | +"\u00CB" => "E" |
| 62 | + |
| 63 | +# Ì => I |
| 64 | +"\u00CC" => "I" |
| 65 | + |
| 66 | +# Í => I |
| 67 | +"\u00CD" => "I" |
| 68 | + |
| 69 | +# Î => I |
| 70 | +"\u00CE" => "I" |
| 71 | + |
| 72 | +# Ï => I |
| 73 | +"\u00CF" => "I" |
| 74 | + |
| 75 | +# IJ => IJ |
| 76 | +"\u0132" => "IJ" |
| 77 | + |
| 78 | +# Ð => D |
| 79 | +"\u00D0" => "D" |
| 80 | + |
| 81 | +# Ñ => N |
| 82 | +"\u00D1" => "N" |
| 83 | + |
| 84 | +# Ò => O |
| 85 | +"\u00D2" => "O" |
| 86 | + |
| 87 | +# Ó => O |
| 88 | +"\u00D3" => "O" |
| 89 | + |
| 90 | +# Ô => O |
| 91 | +"\u00D4" => "O" |
| 92 | + |
| 93 | +# Õ => O |
| 94 | +"\u00D5" => "O" |
| 95 | + |
| 96 | +# Ö => O |
| 97 | +"\u00D6" => "O" |
| 98 | + |
| 99 | +# Ø => O |
| 100 | +"\u00D8" => "O" |
| 101 | + |
| 102 | +# Œ => OE |
| 103 | +"\u0152" => "OE" |
| 104 | + |
| 105 | +# Þ |
| 106 | +"\u00DE" => "TH" |
| 107 | + |
| 108 | +# Ù => U |
| 109 | +"\u00D9" => "U" |
| 110 | + |
| 111 | +# Ú => U |
| 112 | +"\u00DA" => "U" |
| 113 | + |
| 114 | +# Û => U |
| 115 | +"\u00DB" => "U" |
| 116 | + |
| 117 | +# Ü => U |
| 118 | +"\u00DC" => "U" |
| 119 | + |
| 120 | +# Ý => Y |
| 121 | +"\u00DD" => "Y" |
| 122 | + |
| 123 | +# Ÿ => Y |
| 124 | +"\u0178" => "Y" |
| 125 | + |
| 126 | +# à => a |
| 127 | +"\u00E0" => "a" |
| 128 | + |
| 129 | +# á => a |
| 130 | +"\u00E1" => "a" |
| 131 | + |
| 132 | +# â => a |
| 133 | +"\u00E2" => "a" |
| 134 | + |
| 135 | +# ã => a |
| 136 | +"\u00E3" => "a" |
| 137 | + |
| 138 | +# ä => a |
| 139 | +"\u00E4" => "a" |
| 140 | + |
| 141 | +# å => a |
| 142 | +"\u00E5" => "a" |
| 143 | + |
| 144 | +# æ => ae |
| 145 | +"\u00E6" => "ae" |
| 146 | + |
| 147 | +# ç => c |
| 148 | +"\u00E7" => "c" |
| 149 | + |
| 150 | +# è => e |
| 151 | +"\u00E8" => "e" |
| 152 | + |
| 153 | +# é => e |
| 154 | +"\u00E9" => "e" |
| 155 | + |
| 156 | +# ê => e |
| 157 | +"\u00EA" => "e" |
| 158 | + |
| 159 | +# ë => e |
| 160 | +"\u00EB" => "e" |
| 161 | + |
| 162 | +# ì => i |
| 163 | +"\u00EC" => "i" |
| 164 | + |
| 165 | +# í => i |
| 166 | +"\u00ED" => "i" |
| 167 | + |
| 168 | +# î => i |
| 169 | +"\u00EE" => "i" |
| 170 | + |
| 171 | +# ï => i |
| 172 | +"\u00EF" => "i" |
| 173 | + |
| 174 | +# ij => ij |
| 175 | +"\u0133" => "ij" |
| 176 | + |
| 177 | +# ð => d |
| 178 | +"\u00F0" => "d" |
| 179 | + |
| 180 | +# ñ => n |
| 181 | +"\u00F1" => "n" |
| 182 | + |
| 183 | +# ò => o |
| 184 | +"\u00F2" => "o" |
| 185 | + |
| 186 | +# ó => o |
| 187 | +"\u00F3" => "o" |
| 188 | + |
| 189 | +# ô => o |
| 190 | +"\u00F4" => "o" |
| 191 | + |
| 192 | +# õ => o |
| 193 | +"\u00F5" => "o" |
| 194 | + |
| 195 | +# ö => o |
| 196 | +"\u00F6" => "o" |
| 197 | + |
| 198 | +# ø => o |
| 199 | +"\u00F8" => "o" |
| 200 | + |
| 201 | +# œ => oe |
| 202 | +"\u0153" => "oe" |
| 203 | + |
| 204 | +# ß => ss |
| 205 | +"\u00DF" => "ss" |
| 206 | + |
| 207 | +# þ => th |
| 208 | +"\u00FE" => "th" |
| 209 | + |
| 210 | +# ù => u |
| 211 | +"\u00F9" => "u" |
| 212 | + |
| 213 | +# ú => u |
| 214 | +"\u00FA" => "u" |
| 215 | + |
| 216 | +# û => u |
| 217 | +"\u00FB" => "u" |
| 218 | + |
| 219 | +# ü => u |
| 220 | +"\u00FC" => "u" |
| 221 | + |
| 222 | +# ý => y |
| 223 | +"\u00FD" => "y" |
| 224 | + |
| 225 | +# ÿ => y |
| 226 | +"\u00FF" => "y" |
| 227 | + |
| 228 | +# ff => ff |
| 229 | +"\uFB00" => "ff" |
| 230 | + |
| 231 | +# fi => fi |
| 232 | +"\uFB01" => "fi" |
| 233 | + |
| 234 | +# fl => fl |
| 235 | +"\uFB02" => "fl" |
| 236 | + |
| 237 | +# ffi => ffi |
| 238 | +"\uFB03" => "ffi" |
| 239 | + |
| 240 | +# ffl => ffl |
| 241 | +"\uFB04" => "ffl" |
| 242 | + |
| 243 | +# ſt => ft |
| 244 | +"\uFB05" => "ft" |
| 245 | + |
| 246 | +# st => st |
| 247 | +"\uFB06" => "st" |
Property changes on: trunk/extensions/SolrStore/solr-example/core0/conf/mapping-ISOLatin1Accent.txt |
___________________________________________________________________ |
Added: svn:eol-style |
248 | 248 | + native |
Index: trunk/extensions/SolrStore/solr-example/core0/conf/synonyms.txt |
— | — | @@ -1,31 +1,31 @@ |
2 | | -# The ASF licenses this file to You under the Apache License, Version 2.0
|
3 | | -# (the "License"); you may not use this file except in compliance with
|
4 | | -# the License. You may obtain a copy of the License at
|
5 | | -#
|
6 | | -# http://www.apache.org/licenses/LICENSE-2.0
|
7 | | -#
|
8 | | -# Unless required by applicable law or agreed to in writing, software
|
9 | | -# distributed under the License is distributed on an "AS IS" BASIS,
|
10 | | -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
11 | | -# See the License for the specific language governing permissions and
|
12 | | -# limitations under the License.
|
13 | | -
|
14 | | -#-----------------------------------------------------------------------
|
15 | | -#some test synonym mappings unlikely to appear in real input text
|
16 | | -aaa => aaaa
|
17 | | -bbb => bbbb1 bbbb2
|
18 | | -ccc => cccc1,cccc2
|
19 | | -a\=>a => b\=>b
|
20 | | -a\,a => b\,b
|
21 | | -fooaaa,baraaa,bazaaa
|
22 | | -
|
23 | | -# Some synonym groups specific to this example
|
24 | | -GB,gib,gigabyte,gigabytes
|
25 | | -MB,mib,megabyte,megabytes
|
26 | | -Television, Televisions, TV, TVs
|
27 | | -#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming
|
28 | | -#after us won't split it into two words.
|
29 | | -
|
30 | | -# Synonym mappings can be used for spelling correction too
|
31 | | -pixima => pixma
|
32 | | -
|
| 2 | +# The ASF licenses this file to You under the Apache License, Version 2.0 |
| 3 | +# (the "License"); you may not use this file except in compliance with |
| 4 | +# the License. You may obtain a copy of the License at |
| 5 | +# |
| 6 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 7 | +# |
| 8 | +# Unless required by applicable law or agreed to in writing, software |
| 9 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 10 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 11 | +# See the License for the specific language governing permissions and |
| 12 | +# limitations under the License. |
| 13 | + |
| 14 | +#----------------------------------------------------------------------- |
| 15 | +#some test synonym mappings unlikely to appear in real input text |
| 16 | +aaa => aaaa |
| 17 | +bbb => bbbb1 bbbb2 |
| 18 | +ccc => cccc1,cccc2 |
| 19 | +a\=>a => b\=>b |
| 20 | +a\,a => b\,b |
| 21 | +fooaaa,baraaa,bazaaa |
| 22 | + |
| 23 | +# Some synonym groups specific to this example |
| 24 | +GB,gib,gigabyte,gigabytes |
| 25 | +MB,mib,megabyte,megabytes |
| 26 | +Television, Televisions, TV, TVs |
| 27 | +#notice we use "gib" instead of "GiB" so any WordDelimiterFilter coming |
| 28 | +#after us won't split it into two words. |
| 29 | + |
| 30 | +# Synonym mappings can be used for spelling correction too |
| 31 | +pixima => pixma |
| 32 | + |
Property changes on: trunk/extensions/SolrStore/solr-example/core0/conf/synonyms.txt |
___________________________________________________________________ |
Added: svn:eol-style |
33 | 33 | + native |
Index: trunk/extensions/SolrStore/solr-example/core0/conf/spellings.txt |
— | — | @@ -1,2 +1,2 @@ |
2 | | -pizza
|
3 | | -history
|
| 2 | +pizza |
| 3 | +history |
Property changes on: trunk/extensions/SolrStore/solr-example/core0/conf/spellings.txt |
___________________________________________________________________ |
Added: svn:eol-style |
4 | 4 | + native |
Index: trunk/extensions/SolrStore/solr-example/core1/conf/schema.xml |
— | — | @@ -1,41 +1,41 @@ |
2 | | -<?xml version="1.0" ?>
|
3 | | -<!--
|
4 | | - Licensed to the Apache Software Foundation (ASF) under one or more
|
5 | | - contributor license agreements. See the NOTICE file distributed with
|
6 | | - this work for additional information regarding copyright ownership.
|
7 | | - The ASF licenses this file to You under the Apache License, Version 2.0
|
8 | | - (the "License"); you may not use this file except in compliance with
|
9 | | - the License. You may obtain a copy of the License at
|
10 | | -
|
11 | | - http://www.apache.org/licenses/LICENSE-2.0
|
12 | | -
|
13 | | - Unless required by applicable law or agreed to in writing, software
|
14 | | - distributed under the License is distributed on an "AS IS" BASIS,
|
15 | | - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 | | - See the License for the specific language governing permissions and
|
17 | | - limitations under the License.
|
18 | | -
|
19 | | -<schema name="example core zero" version="1.1">
|
20 | | - <types>
|
21 | | - <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
|
22 | | - </types>
|
23 | | -
|
24 | | - <fields>
|
25 | | - <!-- general -->
|
26 | | - <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
|
27 | | - <field name="type" type="string" indexed="true" stored="true" multiValued="false" />
|
28 | | - <field name="name" type="string" indexed="true" stored="true" multiValued="false" />
|
29 | | - <field name="core0" type="string" indexed="true" stored="true" multiValued="false" />
|
30 | | - </fields>
|
31 | | -
|
32 | | - <!-- field to use to determine and enforce document uniqueness. -->
|
33 | | - <uniqueKey>id</uniqueKey>
|
34 | | -
|
35 | | - <!-- field for the QueryParser to use when an explicit fieldname is absent -->
|
36 | | - <defaultSearchField>name</defaultSearchField>
|
37 | | -
|
38 | | - <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
|
39 | | - <solrQueryParser defaultOperator="OR"/>
|
40 | | -</schema>
|
41 | | -
|
| 2 | +<?xml version="1.0" ?> |
| 3 | +<!-- |
| 4 | + Licensed to the Apache Software Foundation (ASF) under one or more |
| 5 | + contributor license agreements. See the NOTICE file distributed with |
| 6 | + this work for additional information regarding copyright ownership. |
| 7 | + The ASF licenses this file to You under the Apache License, Version 2.0 |
| 8 | + (the "License"); you may not use this file except in compliance with |
| 9 | + the License. You may obtain a copy of the License at |
| 10 | + |
| 11 | + http://www.apache.org/licenses/LICENSE-2.0 |
| 12 | + |
| 13 | + Unless required by applicable law or agreed to in writing, software |
| 14 | + distributed under the License is distributed on an "AS IS" BASIS, |
| 15 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 16 | + See the License for the specific language governing permissions and |
| 17 | + limitations under the License. |
| 18 | +--> |
| 19 | + |
| 20 | +<schema name="example core zero" version="1.1"> |
| 21 | + <types> |
| 22 | + <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> |
| 23 | + </types> |
| 24 | + |
| 25 | + <fields> |
| 26 | + <!-- general --> |
| 27 | + <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/> |
| 28 | + <field name="type" type="string" indexed="true" stored="true" multiValued="false" /> |
| 29 | + <field name="name" type="string" indexed="true" stored="true" multiValued="false" /> |
| 30 | + <field name="core0" type="string" indexed="true" stored="true" multiValued="false" /> |
| 31 | + </fields> |
| 32 | + |
| 33 | + <!-- field to use to determine and enforce document uniqueness. --> |
| 34 | + <uniqueKey>id</uniqueKey> |
| 35 | + |
| 36 | + <!-- field for the QueryParser to use when an explicit fieldname is absent --> |
| 37 | + <defaultSearchField>name</defaultSearchField> |
| 38 | + |
| 39 | + <!-- SolrQueryParser configuration: defaultOperator="AND|OR" --> |
| 40 | + <solrQueryParser defaultOperator="OR"/> |
| 41 | +</schema> |
| 42 | + |
Property changes on: trunk/extensions/SolrStore/solr-example/core1/conf/schema.xml |
___________________________________________________________________ |
Added: svn:eol-style |
42 | 43 | + native |
Index: trunk/extensions/SolrStore/solr-example/core1/conf/solrconfig.xml |
— | — | @@ -1,47 +1,47 @@ |
2 | | -<?xml version="1.0" encoding="UTF-8" ?>
|
3 | | -<!--
|
4 | | - Licensed to the Apache Software Foundation (ASF) under one or more
|
5 | | - contributor license agreements. See the NOTICE file distributed with
|
6 | | - this work for additional information regarding copyright ownership.
|
7 | | - The ASF licenses this file to You under the Apache License, Version 2.0
|
8 | | - (the "License"); you may not use this file except in compliance with
|
9 | | - the License. You may obtain a copy of the License at
|
10 | | -
|
11 | | - http://www.apache.org/licenses/LICENSE-2.0
|
12 | | -
|
13 | | - Unless required by applicable law or agreed to in writing, software
|
14 | | - distributed under the License is distributed on an "AS IS" BASIS,
|
15 | | - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 | | - See the License for the specific language governing permissions and
|
17 | | - limitations under the License.
|
18 | | -
|
19 | | -<!--
|
20 | | - This is a stripped down config file used for a simple example...
|
21 | | - It is *not* a good example to work from.
|
22 | | -<config>
|
23 | | - <luceneMatchVersion>LUCENE_35</luceneMatchVersion>
|
24 | | - <!-- The DirectoryFactory to use for indexes.
|
25 | | - solr.StandardDirectoryFactory, the default, is filesystem based.
|
26 | | - solr.RAMDirectoryFactory is memory based, not persistent, and doesn't work with replication. -->
|
27 | | - <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>
|
28 | | -
|
29 | | -
|
30 | | - <updateHandler class="solr.DirectUpdateHandler2" />
|
31 | | -
|
32 | | - <requestDispatcher handleSelect="true" >
|
33 | | - <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
|
34 | | - </requestDispatcher>
|
35 | | -
|
36 | | - <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
|
37 | | - <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
|
38 | | - <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
|
39 | | -
|
40 | | - <!-- config for the admin interface -->
|
41 | | - <admin>
|
42 | | - <defaultQuery>solr</defaultQuery>
|
43 | | - </admin>
|
44 | | -
|
45 | | -</config>
|
46 | | -
|
| 2 | +<?xml version="1.0" encoding="UTF-8" ?> |
| 3 | +<!-- |
| 4 | + Licensed to the Apache Software Foundation (ASF) under one or more |
| 5 | + contributor license agreements. See the NOTICE file distributed with |
| 6 | + this work for additional information regarding copyright ownership. |
| 7 | + The ASF licenses this file to You under the Apache License, Version 2.0 |
| 8 | + (the "License"); you may not use this file except in compliance with |
| 9 | + the License. You may obtain a copy of the License at |
| 10 | + |
| 11 | + http://www.apache.org/licenses/LICENSE-2.0 |
| 12 | + |
| 13 | + Unless required by applicable law or agreed to in writing, software |
| 14 | + distributed under the License is distributed on an "AS IS" BASIS, |
| 15 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 16 | + See the License for the specific language governing permissions and |
| 17 | + limitations under the License. |
| 18 | +--> |
| 19 | + |
| 20 | +<!-- |
| 21 | + This is a stripped down config file used for a simple example... |
| 22 | + It is *not* a good example to work from. |
| 23 | +--> |
| 24 | +<config> |
| 25 | + <luceneMatchVersion>LUCENE_35</luceneMatchVersion> |
| 26 | + <!-- The DirectoryFactory to use for indexes. |
| 27 | + solr.StandardDirectoryFactory, the default, is filesystem based. |
| 28 | + solr.RAMDirectoryFactory is memory based, not persistent, and doesn't work with replication. --> |
| 29 | + <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/> |
| 30 | + |
| 31 | + |
| 32 | + <updateHandler class="solr.DirectUpdateHandler2" /> |
| 33 | + |
| 34 | + <requestDispatcher handleSelect="true" > |
| 35 | + <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" /> |
| 36 | + </requestDispatcher> |
| 37 | + |
| 38 | + <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" /> |
| 39 | + <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" /> |
| 40 | + <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> |
| 41 | + |
| 42 | + <!-- config for the admin interface --> |
| 43 | + <admin> |
| 44 | + <defaultQuery>solr</defaultQuery> |
| 45 | + </admin> |
| 46 | + |
| 47 | +</config> |
| 48 | + |
Property changes on: trunk/extensions/SolrStore/solr-example/core1/conf/solrconfig.xml |
___________________________________________________________________ |
Added: svn:eol-style |
47 | 49 | + native |
Index: trunk/extensions/SolrStore/solr-example/README.txt |
— | — | @@ -1,3 +1,3 @@ |
2 | | -This is an Example Configuration for Solr to use with the SolrStore Extension for the Semantic Mediawiki.
|
3 | | -
|
| 2 | +This is an Example Configuration for Solr to use with the SolrStore Extension for the Semantic Mediawiki. |
| 3 | + |
4 | 4 | Copy it to your solr dir, or just replace your config with one of our cores. You may need to Edit the solr.xml |
\ No newline at end of file |
Property changes on: trunk/extensions/SolrStore/solr-example/README.txt |
___________________________________________________________________ |
Added: svn:eol-style |
5 | 5 | + native |
Index: trunk/extensions/SolrStore/solr-example/solr.xml |
— | — | @@ -1,35 +1,35 @@ |
2 | | -<?xml version="1.0" encoding="UTF-8" ?>
|
3 | | -<!--
|
4 | | - Licensed to the Apache Software Foundation (ASF) under one or more
|
5 | | - contributor license agreements. See the NOTICE file distributed with
|
6 | | - this work for additional information regarding copyright ownership.
|
7 | | - The ASF licenses this file to You under the Apache License, Version 2.0
|
8 | | - (the "License"); you may not use this file except in compliance with
|
9 | | - the License. You may obtain a copy of the License at
|
10 | | -
|
11 | | - http://www.apache.org/licenses/LICENSE-2.0
|
12 | | -
|
13 | | - Unless required by applicable law or agreed to in writing, software
|
14 | | - distributed under the License is distributed on an "AS IS" BASIS,
|
15 | | - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16 | | - See the License for the specific language governing permissions and
|
17 | | - limitations under the License.
|
18 | | -
|
19 | | -<!--
|
20 | | - All (relative) paths are relative to the installation path
|
21 | | -
|
22 | | - persistent: Save changes made via the API to this file
|
23 | | - sharedLib: path to a lib directory that will be shared across all cores
|
24 | | -<solr persistent="false">
|
25 | | -
|
26 | | - <!--
|
27 | | - adminPath: RequestHandler path to manage cores.
|
28 | | - If 'null' (or absent), cores will not be manageable via request handler
|
29 | | - -->
|
30 | | - <cores adminPath="/admin/cores">
|
31 | | - <core name="core1" instanceDir="core1" dataDir="/var/solr/core1" />
|
32 | | - <core name="core0" instanceDir="core0" dataDir="/var/solr/core0" />
|
33 | | - </cores>
|
34 | | -</solr>
|
| 2 | +<?xml version="1.0" encoding="UTF-8" ?> |
| 3 | +<!-- |
| 4 | + Licensed to the Apache Software Foundation (ASF) under one or more |
| 5 | + contributor license agreements. See the NOTICE file distributed with |
| 6 | + this work for additional information regarding copyright ownership. |
| 7 | + The ASF licenses this file to You under the Apache License, Version 2.0 |
| 8 | + (the "License"); you may not use this file except in compliance with |
| 9 | + the License. You may obtain a copy of the License at |
| 10 | + |
| 11 | + http://www.apache.org/licenses/LICENSE-2.0 |
| 12 | + |
| 13 | + Unless required by applicable law or agreed to in writing, software |
| 14 | + distributed under the License is distributed on an "AS IS" BASIS, |
| 15 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 16 | + See the License for the specific language governing permissions and |
| 17 | + limitations under the License. |
| 18 | +--> |
| 19 | + |
| 20 | +<!-- |
| 21 | + All (relative) paths are relative to the installation path |
| 22 | + |
| 23 | + persistent: Save changes made via the API to this file |
| 24 | + sharedLib: path to a lib directory that will be shared across all cores |
| 25 | +--> |
| 26 | +<solr persistent="false"> |
| 27 | + |
| 28 | + <!-- |
| 29 | + adminPath: RequestHandler path to manage cores. |
| 30 | + If 'null' (or absent), cores will not be manageable via request handler |
| 31 | + --> |
| 32 | + <cores adminPath="/admin/cores"> |
| 33 | + <core name="core1" instanceDir="core1" dataDir="/var/solr/core1" /> |
| 34 | + <core name="core0" instanceDir="core0" dataDir="/var/solr/core0" /> |
| 35 | + </cores> |
| 36 | +</solr> |
Property changes on: trunk/extensions/SolrStore/solr-example/solr.xml |
___________________________________________________________________ |
Added: svn:eol-style |
35 | 37 | + native |
Property changes on: trunk/extensions/SolrStore/SolrDoc.php |
___________________________________________________________________ |
Added: svn:eol-style |
36 | 38 | + native |
Property changes on: trunk/extensions/SolrStore/SolrSearch.php |
___________________________________________________________________ |
Added: svn:eol-style |
37 | 39 | + native |
Property changes on: trunk/extensions/SolrStore/SolrSearchFieldSet.php |
___________________________________________________________________ |
Added: svn:eol-style |
38 | 40 | + native |
Property changes on: trunk/extensions/SolrStore/SpecialSolrSearch.php |
___________________________________________________________________ |
Added: svn:eol-style |
39 | 41 | + native |
Property changes on: trunk/extensions/SolrStore/SolrConnectorStore.php |
___________________________________________________________________ |
Added: svn:eol-style |
40 | 42 | + native |
Index: trunk/extensions/SolrStore/SolrConnector.i18n.php |
— | — | @@ -1,26 +1,26 @@ |
2 | | -<?php
|
3 | | -/**
|
4 | | - * SolrStore: The SolrStore Extesion is Semantic Mediawiki Searchprovieder based on Apache Solr.
|
5 | | - *
|
6 | | - * @defgroup SolrStore
|
7 | | - * @author Simon Bachenberg
|
8 | | - */
|
9 | | -$messages = array();
|
10 | | -$specialPageAliases = array();
|
11 | | -
|
12 | | -$messages['en'] = array(
|
13 | | - 'solrsearch' => 'SolrSearch',
|
14 | | - 'searchFieldSets' => 'SolrSearch',
|
15 | | - 'searchFieldSets-select' => 'Please select a SearchSet',
|
16 | | - 'searchFieldSets-title' => 'SolrSearch: SearchSet Select',
|
17 | | -);
|
18 | | -$messages['de'] = array(
|
19 | | - 'solrsearch' => 'SolrSuche',
|
20 | | - 'searchFieldSets' => 'SolrSuche',
|
21 | | - 'searchFieldSets-select' => 'Bitte wählen Sie ein SearchSet aus',
|
22 | | - 'searchFieldSets-title' => 'SolrSearch: SearchSet Auswahl',
|
23 | | -);
|
24 | | -
|
25 | | -$specialPageAliases['en'] = array('solrsearch' => array('SolrSearch', 'SpecialSolrSearch'));
|
26 | | -$specialPageAliases['de'] = array('solrsearch' => array('SolrSearch', 'SpecialSolrSearch'));
|
27 | | -?>
|
| 2 | +<?php |
| 3 | +/** |
| 4 | + * SolrStore: The SolrStore Extesion is Semantic Mediawiki Searchprovieder based on Apache Solr. |
| 5 | + * |
| 6 | + * @defgroup SolrStore |
| 7 | + * @author Simon Bachenberg |
| 8 | + */ |
| 9 | +$messages = array(); |
| 10 | +$specialPageAliases = array(); |
| 11 | + |
| 12 | +$messages['en'] = array( |
| 13 | + 'solrsearch' => 'SolrSearch', |
| 14 | + 'searchFieldSets' => 'SolrSearch', |
| 15 | + 'searchFieldSets-select' => 'Please select a SearchSet', |
| 16 | + 'searchFieldSets-title' => 'SolrSearch: SearchSet Select', |
| 17 | +); |
| 18 | +$messages['de'] = array( |
| 19 | + 'solrsearch' => 'SolrSuche', |
| 20 | + 'searchFieldSets' => 'SolrSuche', |
| 21 | + 'searchFieldSets-select' => 'Bitte wählen Sie ein SearchSet aus', |
| 22 | + 'searchFieldSets-title' => 'SolrSearch: SearchSet Auswahl', |
| 23 | +); |
| 24 | + |
| 25 | +$specialPageAliases['en'] = array('solrsearch' => array('SolrSearch', 'SpecialSolrSearch')); |
| 26 | +$specialPageAliases['de'] = array('solrsearch' => array('SolrSearch', 'SpecialSolrSearch')); |
| 27 | +?> |
Property changes on: trunk/extensions/SolrStore/SolrConnector.i18n.php |
___________________________________________________________________ |
Added: svn:eol-style |
28 | 28 | + native |
Property changes on: trunk/extensions/EducationProgram/specials/SpecialEditInstitution.php |
___________________________________________________________________ |
Added: svn:eol-style |
29 | 29 | + native |
Property changes on: trunk/extensions/EducationProgram/specials/SpecialEPFormPage.php |
___________________________________________________________________ |
Added: svn:eol-style |
30 | 30 | + native |
Property changes on: trunk/extensions/MobileFrontend/FooterTemplate.php |
___________________________________________________________________ |
Added: svn:eol-style |
31 | 31 | + native |
Property changes on: trunk/extensions/MobileFrontend/LeaveFeedbackTemplate.php |
___________________________________________________________________ |
Added: svn:eol-style |
32 | 32 | + native |
Property changes on: trunk/extensions/MobileFrontend/ApplicationTemplate.php |
___________________________________________________________________ |
Added: svn:eol-style |
33 | 33 | + native |
Property changes on: trunk/extensions/MobileFrontend/DisableTemplate.php |
___________________________________________________________________ |
Added: svn:eol-style |
34 | 34 | + native |
Property changes on: trunk/extensions/MobileFrontend/SearchTemplate.php |
___________________________________________________________________ |
Added: svn:eol-style |
35 | 35 | + native |
Property changes on: trunk/extensions/MobileFrontend/MobileFrontendTemplate.php |
___________________________________________________________________ |
Added: svn:eol-style |
36 | 36 | + native |
Property changes on: trunk/extensions/MobileFrontend/javascripts/filepage.js |
___________________________________________________________________ |
Added: svn:eol-style |
37 | 37 | + native |
Property changes on: trunk/extensions/MobileFrontend/ApplicationWmlTemplate.php |
___________________________________________________________________ |
Added: svn:eol-style |
38 | 38 | + native |
Property changes on: trunk/extensions/MobileFrontend/OptInTemplate.php |
___________________________________________________________________ |
Added: svn:eol-style |
39 | 39 | + native |
Property changes on: trunk/extensions/MobileFrontend/OptOutTemplate.php |
___________________________________________________________________ |
Added: svn:eol-style |
40 | 40 | + native |
Property changes on: trunk/extensions/MobileFrontend/ThanksNoticeTemplate.php |
___________________________________________________________________ |
Added: svn:eol-style |
41 | 41 | + native |
Property changes on: trunk/extensions/MobileFrontend/stylesheets/filepage.css |
___________________________________________________________________ |
Added: svn:eol-style |
42 | 42 | + native |
Property changes on: trunk/extensions/MoodBar/include/MoodBarHTMLMailerJob.php |
___________________________________________________________________ |
Added: svn:eol-style |
43 | 43 | + native |
Property changes on: trunk/extensions/MoodBar/include/MoodBarHTMLEmailNotification.php |
___________________________________________________________________ |
Added: svn:eol-style |
44 | 44 | + native |
Property changes on: trunk/extensions/SelectionSifter/SelectionSifter.alias.php |
___________________________________________________________________ |
Added: svn:eol-style |
45 | 45 | + native |
Property changes on: trunk/extensions/SelectionSifter/SelectionSifter.i18n.php |
___________________________________________________________________ |
Added: svn:eol-style |
46 | 46 | + native |
Index: trunk/extensions/skins/Synagonism/skins/synagonism/csshover.htc |
— | — | @@ -1,284 +1,284 @@ |
2 | | -<public:attach event="ondocumentready" onevent="CSSHover()" />
|
3 | | -<script>
|
4 | | -/**
|
5 | | - * Whatever:hover - V3.11
|
6 | | - * ------------------------------------------------------------
|
7 | | - * Author - Peter Nederlof, http://www.xs4all.nl/~peterned
|
8 | | - * License - http://creativecommons.org/licenses/LGPL/2.1
|
9 | | - *
|
10 | | - * Special thanks to Sergiu Dumitriu, http://purl.org/net/sergiu,
|
11 | | - * for fixing the expression loop.
|
12 | | - *
|
13 | | - * Whatever:hover is free software; you can redistribute it and/or
|
14 | | - * modify it under the terms of the GNU Lesser General Public
|
15 | | - * License as published by the Free Software Foundation; either
|
16 | | - * version 2.1 of the License, or (at your option) any later version.
|
17 | | - *
|
18 | | - * Whatever:hover is distributed in the hope that it will be useful,
|
19 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
20 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
21 | | - * Lesser General Public License for more details.
|
22 | | - *
|
23 | | - * howto: body { behavior:url("csshover3.htc"); }
|
24 | | - * ------------------------------------------------------------
|
25 | | - */
|
26 | | -
|
27 | | -window.CSSHover = (function(){
|
28 | | -
|
29 | | - // regular expressions, used and explained later on.
|
30 | | - var REG_INTERACTIVE = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;
|
31 | | - var REG_AFFECTED = /(.*?)\:(hover|active|focus)/i;
|
32 | | - var REG_PSEUDO = /[^:]+:([a-z\-]+).*/i;
|
33 | | - var REG_SELECT = /(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;
|
34 | | - var REG_CLASS = /\.([a-z0-9_\-]*on(hover|active|focus))/i;
|
35 | | - var REG_MSIE = /msie (5|6|7)/i;
|
36 | | - var REG_COMPAT = /backcompat/i;
|
37 | | -
|
38 | | - // property mapping, real css properties must be used in order to clear expressions later on...
|
39 | | - // Uses obscure css properties that no-one is likely to use. The properties are borrowed to
|
40 | | - // set an expression, and are then restored to the most likely correct value.
|
41 | | - var Properties = {
|
42 | | - index: 0,
|
43 | | - list: ['text-kashida', 'text-kashida-space', 'text-justify'],
|
44 | | - get: function() {
|
45 | | - return this.list[(this.index++)%this.list.length];
|
46 | | - }
|
47 | | - };
|
48 | | -
|
49 | | - // camelize is used to convert css properties from (eg) text-kashida to textKashida
|
50 | | - var camelize = function(str) {
|
51 | | - return str.replace(/-(.)/mg, function(result, match){
|
52 | | - return match.toUpperCase();
|
53 | | - });
|
54 | | - };
|
55 | | -
|
56 | | - /**
|
57 | | - * Local CSSHover object
|
58 | | - * --------------------------
|
59 | | - */
|
60 | | -
|
61 | | - var CSSHover = {
|
62 | | -
|
63 | | - // array of CSSHoverElements, used to unload created events
|
64 | | - elements: [],
|
65 | | -
|
66 | | - // buffer used for checking on duplicate expressions
|
67 | | - callbacks: {},
|
68 | | -
|
69 | | - // init, called once ondomcontentready via the exposed window.CSSHover function
|
70 | | - init:function() {
|
71 | | - // don't run in IE8 standards; expressions don't work in standards mode anyway,
|
72 | | - // and the stuff we're trying to fix should already work properly
|
73 | | - if(!REG_MSIE.test(navigator.userAgent) && !REG_COMPAT.test(window.document.compatMode)) {
|
74 | | - return;
|
75 | | - }
|
76 | | -
|
77 | | - // start parsing the existing stylesheets
|
78 | | - var sheets = window.document.styleSheets, l = sheets.length;
|
79 | | - for(var i=0; i<l; i++) {
|
80 | | - this.parseStylesheet(sheets[i]);
|
81 | | - }
|
82 | | - },
|
83 | | -
|
84 | | - // called from init, parses individual stylesheets
|
85 | | - parseStylesheet:function(sheet) {
|
86 | | - // check sheet imports and parse those recursively
|
87 | | - if(sheet.imports) {
|
88 | | - try {
|
89 | | - var imports = sheet.imports;
|
90 | | - var l = imports.length;
|
91 | | - for(var i=0; i<l; i++) {
|
92 | | - this.parseStylesheet(sheet.imports[i]);
|
93 | | - }
|
94 | | - } catch(securityException){
|
95 | | - // trycatch for various possible errors
|
96 | | - }
|
97 | | - }
|
98 | | -
|
99 | | - // interate the sheet's rules and send them to the parser
|
100 | | - try {
|
101 | | - var rules = sheet.rules;
|
102 | | - var r = rules.length;
|
103 | | - for(var j=0; j<r; j++) {
|
104 | | - this.parseCSSRule(rules[j], sheet);
|
105 | | - }
|
106 | | - } catch(someException){
|
107 | | - // trycatch for various errors, most likely accessing the sheet's rules.
|
108 | | - }
|
109 | | - },
|
110 | | -
|
111 | | - // magic starts here ...
|
112 | | - parseCSSRule:function(rule, sheet) {
|
113 | | -
|
114 | | - // The sheet is used to insert new rules into, this must be the same sheet the rule
|
115 | | - // came from, to ensure that relative paths keep pointing to the right location.
|
116 | | -
|
117 | | - // only parse a rule if it contains an interactive pseudo.
|
118 | | - var select = rule.selectorText;
|
119 | | - if(REG_INTERACTIVE.test(select)) {
|
120 | | - var style = rule.style.cssText;
|
121 | | -
|
122 | | - // affected elements are found by truncating the selector after the interactive pseudo,
|
123 | | - // eg: "div li:hover" >> "div li"
|
124 | | - var affected = REG_AFFECTED.exec(select)[1];
|
125 | | -
|
126 | | - // that pseudo is needed for a classname, and defines the type of interaction (focus, hover, active)
|
127 | | - // eg: "li:hover" >> "onhover"
|
128 | | - var pseudo = select.replace(REG_PSEUDO, 'on$1');
|
129 | | -
|
130 | | - // the new selector is going to use that classname in a new css rule,
|
131 | | - // since IE6 doesn't support multiple classnames, this is merged into one classname
|
132 | | - // eg: "li:hover" >> "li.onhover", "li.folder:hover" >> "li.folderonhover"
|
133 | | - var newSelect = select.replace(REG_SELECT, '.$2' + pseudo);
|
134 | | -
|
135 | | - // the classname is needed for the events that are going to be set on affected nodes
|
136 | | - // eg: "li.folder:hover" >> "folderonhover"
|
137 | | - var className = REG_CLASS.exec(newSelect)[1];
|
138 | | -
|
139 | | - // no need to set the same callback more than once when the same selector uses the same classname
|
140 | | - var hash = affected + className;
|
141 | | - if(!this.callbacks[hash]) {
|
142 | | -
|
143 | | - // affected elements are given an expression under a borrowed css property, because fake properties
|
144 | | - // can't have their expressions cleared. Different properties are used per pseudo, to avoid
|
145 | | - // expressions from overwriting eachother. The expression does a callback to CSSHover.patch,
|
146 | | - // rerouted via the exposed window.CSSHover function.
|
147 | | - var property = Properties.get();
|
148 | | - var atRuntime = camelize(property);
|
149 | | -
|
150 | | - // because the expression is added to the stylesheet, and styles are always applied to html that is
|
151 | | - // dynamically added to the dom, the expression will also trigger for those new elements (provided
|
152 | | - // they are selected by the affected selector).
|
153 | | - sheet.addRule(affected, property + ':expression(CSSHover(this, "'+pseudo+'", "'+className+'", "'+atRuntime+'"))');
|
154 | | -
|
155 | | - // hash it, so an identical selector/class combo does not duplicate the expression
|
156 | | - this.callbacks[hash] = true;
|
157 | | - }
|
158 | | -
|
159 | | - // duplicate expressions need not be set, but the style could differ
|
160 | | - sheet.addRule(newSelect, style);
|
161 | | - }
|
162 | | - },
|
163 | | -
|
164 | | - // called via the expression, patches individual nodes
|
165 | | - patch:function(node, type, className, property) {
|
166 | | -
|
167 | | - // restores the borrowed css property to the value of its immediate parent, clearing
|
168 | | - // the expression so that it's not repeatedly called.
|
169 | | - try {
|
170 | | - var value = node.parentNode.currentStyle[property];
|
171 | | - node.style[property] = value;
|
172 | | - } catch(e) {
|
173 | | - // the above reset should never fail, but just in case, clear the runtimeStyle if it does.
|
174 | | - // this will also stop the expression.
|
175 | | - node.runtimeStyle[property] = '';
|
176 | | - }
|
177 | | -
|
178 | | - // just to make sure, also keep track of patched classnames locally on the node
|
179 | | - if(!node.csshover) {
|
180 | | - node.csshover = [];
|
181 | | - }
|
182 | | -
|
183 | | - // and check for it to prevent duplicate events with the same classname from being set
|
184 | | - if(!node.csshover[className]) {
|
185 | | - node.csshover[className] = true;
|
186 | | -
|
187 | | - // create an instance for the given type and class
|
188 | | - var element = new CSSHoverElement(node, type, className);
|
189 | | -
|
190 | | - // and store that instance for unloading later on
|
191 | | - this.elements.push(element);
|
192 | | - }
|
193 | | -
|
194 | | - // returns a dummy value to the expression
|
195 | | - return type;
|
196 | | - },
|
197 | | -
|
198 | | - // unload stuff onbeforeunload
|
199 | | - unload:function() {
|
200 | | - try {
|
201 | | -
|
202 | | - // remove events
|
203 | | - var l = this.elements.length;
|
204 | | - for(var i=0; i<l; i++) {
|
205 | | - this.elements[i].unload();
|
206 | | - }
|
207 | | -
|
208 | | - // and set properties to null
|
209 | | - this.elements = [];
|
210 | | - this.callbacks = {};
|
211 | | -
|
212 | | - } catch (e) {
|
213 | | - }
|
214 | | - }
|
215 | | - };
|
216 | | -
|
217 | | - /**
|
218 | | - * CSSHoverElement
|
219 | | - * --------------------------
|
220 | | - */
|
221 | | -
|
222 | | - // the event types associated with the interactive pseudos
|
223 | | - var CSSEvents = {
|
224 | | - onhover: { activator: 'onmouseenter', deactivator: 'onmouseleave' },
|
225 | | - onactive: { activator: 'onmousedown', deactivator: 'onmouseup' },
|
226 | | - onfocus: { activator: 'onfocus', deactivator: 'onblur' }
|
227 | | - };
|
228 | | -
|
229 | | - // CSSHoverElement constructor, called via CSSHover.patch
|
230 | | - function CSSHoverElement(node, type, className) {
|
231 | | -
|
232 | | - // the CSSHoverElement patches individual nodes by manually applying the events that should
|
233 | | - // have fired by the css pseudoclasses, eg mouseenter and mouseleave for :hover.
|
234 | | -
|
235 | | - this.node = node;
|
236 | | - this.type = type;
|
237 | | - var replacer = new RegExp('(^|\\s)'+className+'(\\s|$)', 'g');
|
238 | | -
|
239 | | - // store event handlers for removal onunload
|
240 | | - this.activator = function(){ node.className += ' ' + className; };
|
241 | | - this.deactivator = function(){ node.className = node.className.replace(replacer, ' '); };
|
242 | | -
|
243 | | - // add the events
|
244 | | - node.attachEvent(CSSEvents[type].activator, this.activator);
|
245 | | - node.attachEvent(CSSEvents[type].deactivator, this.deactivator);
|
246 | | - }
|
247 | | -
|
248 | | - CSSHoverElement.prototype = {
|
249 | | - // onbeforeunload, called via CSSHover.unload
|
250 | | - unload:function() {
|
251 | | -
|
252 | | - // remove events
|
253 | | - this.node.detachEvent(CSSEvents[this.type].activator, this.activator);
|
254 | | - this.node.detachEvent(CSSEvents[this.type].deactivator, this.deactivator);
|
255 | | -
|
256 | | - // and set properties to null
|
257 | | - this.activator = null;
|
258 | | - this.deactivator = null;
|
259 | | - this.node = null;
|
260 | | - this.type = null;
|
261 | | - }
|
262 | | - };
|
263 | | -
|
264 | | - // add the unload to the onbeforeunload event
|
265 | | - window.attachEvent('onbeforeunload', function(){
|
266 | | - CSSHover.unload();
|
267 | | - });
|
268 | | -
|
269 | | - /**
|
270 | | - * Public hook
|
271 | | - * --------------------------
|
272 | | - */
|
273 | | -
|
274 | | - return function(node, type, className, property) {
|
275 | | - if(node) {
|
276 | | - // called via the css expression; patches individual nodes
|
277 | | - return CSSHover.patch(node, type, className, property);
|
278 | | - } else {
|
279 | | - // called ondomcontentready via the public:attach node
|
280 | | - CSSHover.init();
|
281 | | - }
|
282 | | - };
|
283 | | -
|
284 | | -})();
|
| 2 | +<public:attach event="ondocumentready" onevent="CSSHover()" /> |
| 3 | +<script> |
| 4 | +/** |
| 5 | + * Whatever:hover - V3.11 |
| 6 | + * ------------------------------------------------------------ |
| 7 | + * Author - Peter Nederlof, http://www.xs4all.nl/~peterned |
| 8 | + * License - http://creativecommons.org/licenses/LGPL/2.1 |
| 9 | + * |
| 10 | + * Special thanks to Sergiu Dumitriu, http://purl.org/net/sergiu, |
| 11 | + * for fixing the expression loop. |
| 12 | + * |
| 13 | + * Whatever:hover is free software; you can redistribute it and/or |
| 14 | + * modify it under the terms of the GNU Lesser General Public |
| 15 | + * License as published by the Free Software Foundation; either |
| 16 | + * version 2.1 of the License, or (at your option) any later version. |
| 17 | + * |
| 18 | + * Whatever:hover is distributed in the hope that it will be useful, |
| 19 | + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 20 | + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 21 | + * Lesser General Public License for more details. |
| 22 | + * |
| 23 | + * howto: body { behavior:url("csshover3.htc"); } |
| 24 | + * ------------------------------------------------------------ |
| 25 | + */ |
| 26 | + |
| 27 | +window.CSSHover = (function(){ |
| 28 | + |
| 29 | + // regular expressions, used and explained later on. |
| 30 | + var REG_INTERACTIVE = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i; |
| 31 | + var REG_AFFECTED = /(.*?)\:(hover|active|focus)/i; |
| 32 | + var REG_PSEUDO = /[^:]+:([a-z\-]+).*/i; |
| 33 | + var REG_SELECT = /(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi; |
| 34 | + var REG_CLASS = /\.([a-z0-9_\-]*on(hover|active|focus))/i; |
| 35 | + var REG_MSIE = /msie (5|6|7)/i; |
| 36 | + var REG_COMPAT = /backcompat/i; |
| 37 | + |
| 38 | + // property mapping, real css properties must be used in order to clear expressions later on... |
| 39 | + // Uses obscure css properties that no-one is likely to use. The properties are borrowed to |
| 40 | + // set an expression, and are then restored to the most likely correct value. |
| 41 | + var Properties = { |
| 42 | + index: 0, |
| 43 | + list: ['text-kashida', 'text-kashida-space', 'text-justify'], |
| 44 | + get: function() { |
| 45 | + return this.list[(this.index++)%this.list.length]; |
| 46 | + } |
| 47 | + }; |
| 48 | + |
| 49 | + // camelize is used to convert css properties from (eg) text-kashida to textKashida |
| 50 | + var camelize = function(str) { |
| 51 | + return str.replace(/-(.)/mg, function(result, match){ |
| 52 | + return match.toUpperCase(); |
| 53 | + }); |
| 54 | + }; |
| 55 | + |
| 56 | + /** |
| 57 | + * Local CSSHover object |
| 58 | + * -------------------------- |
| 59 | + */ |
| 60 | + |
| 61 | + var CSSHover = { |
| 62 | + |
| 63 | + // array of CSSHoverElements, used to unload created events |
| 64 | + elements: [], |
| 65 | + |
| 66 | + // buffer used for checking on duplicate expressions |
| 67 | + callbacks: {}, |
| 68 | + |
| 69 | + // init, called once ondomcontentready via the exposed window.CSSHover function |
| 70 | + init:function() { |
| 71 | + // don't run in IE8 standards; expressions don't work in standards mode anyway, |
| 72 | + // and the stuff we're trying to fix should already work properly |
| 73 | + if(!REG_MSIE.test(navigator.userAgent) && !REG_COMPAT.test(window.document.compatMode)) { |
| 74 | + return; |
| 75 | + } |
| 76 | + |
| 77 | + // start parsing the existing stylesheets |
| 78 | + var sheets = window.document.styleSheets, l = sheets.length; |
| 79 | + for(var i=0; i<l; i++) { |
| 80 | + this.parseStylesheet(sheets[i]); |
| 81 | + } |
| 82 | + }, |
| 83 | + |
| 84 | + // called from init, parses individual stylesheets |
| 85 | + parseStylesheet:function(sheet) { |
| 86 | + // check sheet imports and parse those recursively |
| 87 | + if(sheet.imports) { |
| 88 | + try { |
| 89 | + var imports = sheet.imports; |
| 90 | + var l = imports.length; |
| 91 | + for(var i=0; i<l; i++) { |
| 92 | + this.parseStylesheet(sheet.imports[i]); |
| 93 | + } |
| 94 | + } catch(securityException){ |
| 95 | + // trycatch for various possible errors |
| 96 | + } |
| 97 | + } |
| 98 | + |
| 99 | + // interate the sheet's rules and send them to the parser |
| 100 | + try { |
| 101 | + var rules = sheet.rules; |
| 102 | + var r = rules.length; |
| 103 | + for(var j=0; j<r; j++) { |
| 104 | + this.parseCSSRule(rules[j], sheet); |
| 105 | + } |
| 106 | + } catch(someException){ |
| 107 | + // trycatch for various errors, most likely accessing the sheet's rules. |
| 108 | + } |
| 109 | + }, |
| 110 | + |
| 111 | + // magic starts here ... |
| 112 | + parseCSSRule:function(rule, sheet) { |
| 113 | + |
| 114 | + // The sheet is used to insert new rules into, this must be the same sheet the rule |
| 115 | + // came from, to ensure that relative paths keep pointing to the right location. |
| 116 | + |
| 117 | + // only parse a rule if it contains an interactive pseudo. |
| 118 | + var select = rule.selectorText; |
| 119 | + if(REG_INTERACTIVE.test(select)) { |
| 120 | + var style = rule.style.cssText; |
| 121 | + |
| 122 | + // affected elements are found by truncating the selector after the interactive pseudo, |
| 123 | + // eg: "div li:hover" >> "div li" |
| 124 | + var affected = REG_AFFECTED.exec(select)[1]; |
| 125 | + |
| 126 | + // that pseudo is needed for a classname, and defines the type of interaction (focus, hover, active) |
| 127 | + // eg: "li:hover" >> "onhover" |
| 128 | + var pseudo = select.replace(REG_PSEUDO, 'on$1'); |
| 129 | + |
| 130 | + // the new selector is going to use that classname in a new css rule, |
| 131 | + // since IE6 doesn't support multiple classnames, this is merged into one classname |
| 132 | + // eg: "li:hover" >> "li.onhover", "li.folder:hover" >> "li.folderonhover" |
| 133 | + var newSelect = select.replace(REG_SELECT, '.$2' + pseudo); |
| 134 | + |
| 135 | + // the classname is needed for the events that are going to be set on affected nodes |
| 136 | + // eg: "li.folder:hover" >> "folderonhover" |
| 137 | + var className = REG_CLASS.exec(newSelect)[1]; |
| 138 | + |
| 139 | + // no need to set the same callback more than once when the same selector uses the same classname |
| 140 | + var hash = affected + className; |
| 141 | + if(!this.callbacks[hash]) { |
| 142 | + |
| 143 | + // affected elements are given an expression under a borrowed css property, because fake properties |
| 144 | + // can't have their expressions cleared. Different properties are used per pseudo, to avoid |
| 145 | + // expressions from overwriting eachother. The expression does a callback to CSSHover.patch, |
| 146 | + // rerouted via the exposed window.CSSHover function. |
| 147 | + var property = Properties.get(); |
| 148 | + var atRuntime = camelize(property); |
| 149 | + |
| 150 | + // because the expression is added to the stylesheet, and styles are always applied to html that is |
| 151 | + // dynamically added to the dom, the expression will also trigger for those new elements (provided |
| 152 | + // they are selected by the affected selector). |
| 153 | + sheet.addRule(affected, property + ':expression(CSSHover(this, "'+pseudo+'", "'+className+'", "'+atRuntime+'"))'); |
| 154 | + |
| 155 | + // hash it, so an identical selector/class combo does not duplicate the expression |
| 156 | + this.callbacks[hash] = true; |
| 157 | + } |
| 158 | + |
| 159 | + // duplicate expressions need not be set, but the style could differ |
| 160 | + sheet.addRule(newSelect, style); |
| 161 | + } |
| 162 | + }, |
| 163 | + |
| 164 | + // called via the expression, patches individual nodes |
| 165 | + patch:function(node, type, className, property) { |
| 166 | + |
| 167 | + // restores the borrowed css property to the value of its immediate parent, clearing |
| 168 | + // the expression so that it's not repeatedly called. |
| 169 | + try { |
| 170 | + var value = node.parentNode.currentStyle[property]; |
| 171 | + node.style[property] = value; |
| 172 | + } catch(e) { |
| 173 | + // the above reset should never fail, but just in case, clear the runtimeStyle if it does. |
| 174 | + // this will also stop the expression. |
| 175 | + node.runtimeStyle[property] = ''; |
| 176 | + } |
| 177 | + |
| 178 | + // just to make sure, also keep track of patched classnames locally on the node |
| 179 | + if(!node.csshover) { |
| 180 | + node.csshover = []; |
| 181 | + } |
| 182 | + |
| 183 | + // and check for it to prevent duplicate events with the same classname from being set |
| 184 | + if(!node.csshover[className]) { |
| 185 | + node.csshover[className] = true; |
| 186 | + |
| 187 | + // create an instance for the given type and class |
| 188 | + var element = new CSSHoverElement(node, type, className); |
| 189 | + |
| 190 | + // and store that instance for unloading later on |
| 191 | + this.elements.push(element); |
| 192 | + } |
| 193 | + |
| 194 | + // returns a dummy value to the expression |
| 195 | + return type; |
| 196 | + }, |
| 197 | + |
| 198 | + // unload stuff onbeforeunload |
| 199 | + unload:function() { |
| 200 | + try { |
| 201 | + |
| 202 | + // remove events |
| 203 | + var l = this.elements.length; |
| 204 | + for(var i=0; i<l; i++) { |
| 205 | + this.elements[i].unload(); |
| 206 | + } |
| 207 | + |
| 208 | + // and set properties to null |
| 209 | + this.elements = []; |
| 210 | + this.callbacks = {}; |
| 211 | + |
| 212 | + } catch (e) { |
| 213 | + } |
| 214 | + } |
| 215 | + }; |
| 216 | + |
| 217 | + /** |
| 218 | + * CSSHoverElement |
| 219 | + * -------------------------- |
| 220 | + */ |
| 221 | + |
| 222 | + // the event types associated with the interactive pseudos |
| 223 | + var CSSEvents = { |
| 224 | + onhover: { activator: 'onmouseenter', deactivator: 'onmouseleave' }, |
| 225 | + onactive: { activator: 'onmousedown', deactivator: 'onmouseup' }, |
| 226 | + onfocus: { activator: 'onfocus', deactivator: 'onblur' } |
| 227 | + }; |
| 228 | + |
| 229 | + // CSSHoverElement constructor, called via CSSHover.patch |
| 230 | + function CSSHoverElement(node, type, className) { |
| 231 | + |
| 232 | + // the CSSHoverElement patches individual nodes by manually applying the events that should |
| 233 | + // have fired by the css pseudoclasses, eg mouseenter and mouseleave for :hover. |
| 234 | + |
| 235 | + this.node = node; |
| 236 | + this.type = type; |
| 237 | + var replacer = new RegExp('(^|\\s)'+className+'(\\s|$)', 'g'); |
| 238 | + |
| 239 | + // store event handlers for removal onunload |
| 240 | + this.activator = function(){ node.className += ' ' + className; }; |
| 241 | + this.deactivator = function(){ node.className = node.className.replace(replacer, ' '); }; |
| 242 | + |
| 243 | + // add the events |
| 244 | + node.attachEvent(CSSEvents[type].activator, this.activator); |
| 245 | + node.attachEvent(CSSEvents[type].deactivator, this.deactivator); |
| 246 | + } |
| 247 | + |
| 248 | + CSSHoverElement.prototype = { |
| 249 | + // onbeforeunload, called via CSSHover.unload |
| 250 | + unload:function() { |
| 251 | + |
| 252 | + // remove events |
| 253 | + this.node.detachEvent(CSSEvents[this.type].activator, this.activator); |
| 254 | + this.node.detachEvent(CSSEvents[this.type].deactivator, this.deactivator); |
| 255 | + |
| 256 | + // and set properties to null |
| 257 | + this.activator = null; |
| 258 | + this.deactivator = null; |
| 259 | + this.node = null; |
| 260 | + this.type = null; |
| 261 | + } |
| 262 | + }; |
| 263 | + |
| 264 | + // add the unload to the onbeforeunload event |
| 265 | + window.attachEvent('onbeforeunload', function(){ |
| 266 | + CSSHover.unload(); |
| 267 | + }); |
| 268 | + |
| 269 | + /** |
| 270 | + * Public hook |
| 271 | + * -------------------------- |
| 272 | + */ |
| 273 | + |
| 274 | + return function(node, type, className, property) { |
| 275 | + if(node) { |
| 276 | + // called via the css expression; patches individual nodes |
| 277 | + return CSSHover.patch(node, type, className, property); |
| 278 | + } else { |
| 279 | + // called ondomcontentready via the public:attach node |
| 280 | + CSSHover.init(); |
| 281 | + } |
| 282 | + }; |
| 283 | + |
| 284 | +})(); |
285 | 285 | </script> |
\ No newline at end of file |
Property changes on: trunk/extensions/skins/Synagonism/skins/synagonism/csshover.htc |
___________________________________________________________________ |
Added: svn:eol-style |
286 | 286 | + native |
Index: trunk/extensions/skins/Synagonism/skins/synagonism/csshover.min.htc |
— | — | @@ -1,12 +1,12 @@ |
2 | | -<public:attach event="ondocumentready" onevent="CSSHover()" />
|
3 | | -<script>
|
4 | | -/**
|
5 | | - * Whatever:hover - V3.11
|
6 | | - * http://www.xs4all.nl/~peterned/
|
7 | | - *
|
8 | | - * Copyright (c) 2009 Peter Nederlof
|
9 | | - * Licensed under the LGPL license
|
10 | | - * http://creativecommons.org/licenses/LGPL/2.1
|
11 | | - */
|
12 | | -window.CSSHover=(function(){var m=/(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;var n=/(.*?)\:(hover|active|focus)/i;var o=/[^:]+:([a-z\-]+).*/i;var p=/(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;var q=/\.([a-z0-9_\-]*on(hover|active|focus))/i;var s=/msie (5|6|7)/i;var t=/backcompat/i;var u={index:0,list:['text-kashida','text-kashida-space','text-justify'],get:function(){return this.list[(this.index++)%this.list.length]}};var v=function(c){return c.replace(/-(.)/mg,function(a,b){return b.toUpperCase()})};var w={elements:[],callbacks:{},init:function(){if(!s.test(navigator.userAgent)&&!t.test(window.document.compatMode)){return}var a=window.document.styleSheets,l=a.length;for(var i=0;i<l;i++){this.parseStylesheet(a[i])}},parseStylesheet:function(a){if(a.imports){try{var b=a.imports;var l=b.length;for(var i=0;i<l;i++){this.parseStylesheet(a.imports[i])}}catch(securityException){}}try{var c=a.rules;var r=c.length;for(var j=0;j<r;j++){this.parseCSSRule(c[j],a)}}catch(someException){}},parseCSSRule:function(a,b){var c=a.selectorText;if(m.test(c)){var d=a.style.cssText;var e=n.exec(c)[1];var f=c.replace(o,'on$1');var g=c.replace(p,'.$2'+f);var h=q.exec(g)[1];var i=e+h;if(!this.callbacks[i]){var j=u.get();var k=v(j);b.addRule(e,j+':expression(CSSHover(this, "'+f+'", "'+h+'", "'+k+'"))');this.callbacks[i]=true}b.addRule(g,d)}},patch:function(a,b,c,d){try{var f=a.parentNode.currentStyle[d];a.style[d]=f}catch(e){a.runtimeStyle[d]=''}if(!a.csshover){a.csshover=[]}if(!a.csshover[c]){a.csshover[c]=true;var g=new CSSHoverElement(a,b,c);this.elements.push(g)}return b},unload:function(){try{var l=this.elements.length;for(var i=0;i<l;i++){this.elements[i].unload()}this.elements=[];this.callbacks={}}catch(e){}}};var x={onhover:{activator:'onmouseenter',deactivator:'onmouseleave'},onactive:{activator:'onmousedown',deactivator:'onmouseup'},onfocus:{activator:'onfocus',deactivator:'onblur'}};function CSSHoverElement(a,b,c){this.node=a;this.type=b;var d=new RegExp('(^|\\s)'+c+'(\\s|$)','g');this.activator=function(){a.className+=' '+c};this.deactivator=function(){a.className=a.className.replace(d,' ')};a.attachEvent(x[b].activator,this.activator);a.attachEvent(x[b].deactivator,this.deactivator)}CSSHoverElement.prototype={unload:function(){this.node.detachEvent(x[this.type].activator,this.activator);this.node.detachEvent(x[this.type].deactivator,this.deactivator);this.activator=null;this.deactivator=null;this.node=null;this.type=null}};window.attachEvent('onbeforeunload',function(){w.unload()});return function(a,b,c,d){if(a){return w.patch(a,b,c,d)}else{w.init()}}})();
|
13 | | -</script>
|
| 2 | +<public:attach event="ondocumentready" onevent="CSSHover()" /> |
| 3 | +<script> |
| 4 | +/** |
| 5 | + * Whatever:hover - V3.11 |
| 6 | + * http://www.xs4all.nl/~peterned/ |
| 7 | + * |
| 8 | + * Copyright (c) 2009 Peter Nederlof |
| 9 | + * Licensed under the LGPL license |
| 10 | + * http://creativecommons.org/licenses/LGPL/2.1 |
| 11 | + */ |
| 12 | +window.CSSHover=(function(){var m=/(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i;var n=/(.*?)\:(hover|active|focus)/i;var o=/[^:]+:([a-z\-]+).*/i;var p=/(\.([a-z0-9_\-]+):[a-z]+)|(:[a-z]+)/gi;var q=/\.([a-z0-9_\-]*on(hover|active|focus))/i;var s=/msie (5|6|7)/i;var t=/backcompat/i;var u={index:0,list:['text-kashida','text-kashida-space','text-justify'],get:function(){return this.list[(this.index++)%this.list.length]}};var v=function(c){return c.replace(/-(.)/mg,function(a,b){return b.toUpperCase()})};var w={elements:[],callbacks:{},init:function(){if(!s.test(navigator.userAgent)&&!t.test(window.document.compatMode)){return}var a=window.document.styleSheets,l=a.length;for(var i=0;i<l;i++){this.parseStylesheet(a[i])}},parseStylesheet:function(a){if(a.imports){try{var b=a.imports;var l=b.length;for(var i=0;i<l;i++){this.parseStylesheet(a.imports[i])}}catch(securityException){}}try{var c=a.rules;var r=c.length;for(var j=0;j<r;j++){this.parseCSSRule(c[j],a)}}catch(someException){}},parseCSSRule:function(a,b){var c=a.selectorText;if(m.test(c)){var d=a.style.cssText;var e=n.exec(c)[1];var f=c.replace(o,'on$1');var g=c.replace(p,'.$2'+f);var h=q.exec(g)[1];var i=e+h;if(!this.callbacks[i]){var j=u.get();var k=v(j);b.addRule(e,j+':expression(CSSHover(this, "'+f+'", "'+h+'", "'+k+'"))');this.callbacks[i]=true}b.addRule(g,d)}},patch:function(a,b,c,d){try{var f=a.parentNode.currentStyle[d];a.style[d]=f}catch(e){a.runtimeStyle[d]=''}if(!a.csshover){a.csshover=[]}if(!a.csshover[c]){a.csshover[c]=true;var g=new CSSHoverElement(a,b,c);this.elements.push(g)}return b},unload:function(){try{var l=this.elements.length;for(var i=0;i<l;i++){this.elements[i].unload()}this.elements=[];this.callbacks={}}catch(e){}}};var x={onhover:{activator:'onmouseenter',deactivator:'onmouseleave'},onactive:{activator:'onmousedown',deactivator:'onmouseup'},onfocus:{activator:'onfocus',deactivator:'onblur'}};function CSSHoverElement(a,b,c){this.node=a;this.type=b;var d=new RegExp('(^|\\s)'+c+'(\\s|$)','g');this.activator=function(){a.className+=' '+c};this.deactivator=function(){a.className=a.className.replace(d,' ')};a.attachEvent(x[b].activator,this.activator);a.attachEvent(x[b].deactivator,this.deactivator)}CSSHoverElement.prototype={unload:function(){this.node.detachEvent(x[this.type].activator,this.activator);this.node.detachEvent(x[this.type].deactivator,this.deactivator);this.activator=null;this.deactivator=null;this.node=null;this.type=null}};window.attachEvent('onbeforeunload',function(){w.unload()});return function(a,b,c,d){if(a){return w.patch(a,b,c,d)}else{w.init()}}})(); |
| 13 | +</script> |
Property changes on: trunk/extensions/skins/Synagonism/skins/synagonism/csshover.min.htc |
___________________________________________________________________ |
Added: svn:eol-style |
14 | 14 | + native |