Замените специальные символы эквивалентным ASCII

Как я уже говорил в своем комментарии, вы должны вызвать ctx.beginPath (); в конце цикла. Чтобы применить разные цвета, вы должны использовать несколько путей.

.
.
.

for(var i=0; i < json.length; i++){
   ctx.lineTo(json[i].x, json[i].y);
   ctx.strokeStyle = json[i].color;
   ctx.stroke();
   ctx.beginPath();
}
29
задан MERose 28 May 2015 в 10:34
поделиться

5 ответов

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import unicodedata
text = u'Cześć'
print unicodedata.normalize('NFD', text).encode('ascii', 'ignore')
33
ответ дан nosklo 28 November 2019 в 01:27
поделиться

Вы можете получить большую часть пути, выполнив:

import unicodedata

def strip_accents(text):
    return ''.join(c for c in unicodedata.normalize('NFKD', text) if unicodedata.category(c) != 'Mn')

К сожалению, существуют акцентированные латинские буквы, которые нельзя разложить на ASCII-буквы + комбинирующие метки. Вам придется обращаться с ними вручную. К ним относятся:

  • Æ → AE
  • Ð → D
  • Ø → O
  • Þ → TH
  • ß → ss
  • æ → ae
  • ð → d
  • ø → o
  • þ → th
  • Œ → OE
  • œ → oe
  • ƒ → f
15
ответ дан dan04 28 November 2019 в 01:27
поделиться

Я сделал это следующим образом:

POLISH_CHARACTERS = {
    50309:'a',50311:'c',50329:'e',50562:'l',50564:'n',50099:'o',50587:'s',50618:'z',50620:'z',
    50308:'A',50310:'C',50328:'E',50561:'L',50563:'N',50067:'O',50586:'S',50617:'Z',50619:'Z',}

def encodePL(text):
    nrmtxt = unicodedata.normalize('NFC',text)
    i = 0
    ret_str = []
    while i < len(nrmtxt):
        if ord(text[i])>128: # non ASCII character
            fbyte = ord(text[i])
            sbyte = ord(text[i+1])
            lkey = (fbyte << 8) + sbyte
            ret_str.append(POLISH_CHARACTERS.get(lkey))
            i = i+1
        else: # pure ASCII character
            ret_str.append(text[i])
        i = i+1
    return ''.join(ret_str)

при выполнении:

encodePL(u'ąćęłńóśźż ĄĆĘŁŃÓŚŹŻ')

он будет выдавать вывод примерно так:

u'acelnoszz ACELNOSZZ'

Это прекрасно работает для я -; D

4
ответ дан Grzegorz Skrzypczak 28 November 2019 в 01:27
поделиться

Трюк unicodedata.normalize лучше всего описать как половину асси. Вот надежный подход , который включает в себя отображение букв без разложения. Обратите внимание на дополнительные записи карты в комментариях.

1
ответ дан John Machin 28 November 2019 в 01:27
поделиться

Попробуйте пакет trans . Выглядит очень перспективно. Поддерживает польский.

3
ответ дан Marcin Wojnarski 28 November 2019 в 01:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: