[Jprogramming] Writing help needed: surrogate pairs
'robert therriault' via Programming
programming at jsoftware.com
Wed Sep 4 15:23:06 UTC 2019
Yeah, one of my challenges is to go back and understand the choices that I made when developing these verbs. The simple ways can decode complete sequences, but I needed something that would decode incomplete sequences consistent with the way that J did it. Once I had that working I moved on, but now I may need to go back and really understand what I was doing in that process.
At one point I had tried sequential machines, but I found that they were a lot slower than the explicit version that I came up with and even more opaque.
Cheers, bob
> On Sep 4, 2019, at 8:16 AM, Raul Miller <rauldmiller at gmail.com> wrote:
>
> Interesting...
>
> I tried for a shorter version:
>
> bu=: [:(a.i.8&u:)&.>9&u:
>
> But, of course, this rejects incomplete unicode sequences with a domain error...
>
> Thanks,
>
> --
> Raul
>
>
> On Tue, Sep 3, 2019 at 11:46 PM 'robert therriault' via Programming
> <programming at jsoftware.com> wrote:
>>
>> Henry,
>>
>> How can I turn down such a gracious invitation. :-)
>>
>> Seriously, I will do my best, having bounced around the unicode and unicode4 aspects of J while putting jig together. I don't claim to be able match the clear writing that you and Ian have done, but revision always welcomed and that is what wiki's are made for.
>>
>> And I do have two verbs that parse the code points which might be useful as well.
>>
>> 9 u: 128512
>>
>>
>> boxutf=: 3 : 0"1 NB. for literals
>> a=.a: [ t=.3 u: y
>> while. #t do.
>> select. s=. 127 191 223 239 I. {. t
>> case. (0;1) do. t=.}.t [ a=.a,< {.t
>> case. do. if. 0={:t1=.s{.t do. a=.a,<"0 t1-.0
>> elseif. 191 < >./ }.t1 do. a=.a,<"0 s{.t1 [ s=.>:@:(1 i.~ 191 < }.) t1
>> elseif. do. a=.a,< t1 end. t=. s }.t
>> end.
>> end.
>> }.a
>> )
>> boxutf ": 9 u: 128512 NB. converted to literal
>> ┌───────────────┐
>> │240 159 152 128│
>> └───────────────┘
>> 240 159 152 128 { a.
>>
>> 3 !: 0 [240 159 152 128 { a.
>> 2 NB. tyoe literal
>> boxutf 2{. ": 9 u: 128512 NB. incomplete code breaks into nondisplayable characters
>> ┌───┬───┐
>> │240│159│
>> └───┴───┘
>> 240 159 { a.
>> ��
>>
>> boxuni=: 3 : 0"1 NB. for unicode and unicode4
>> a=.a: [ t=.3 u: y
>> while. #t do.
>> select. 55295 57343 I. {. t
>> case. (0;2) do. t=. }. t [ a=. a , < {. t
>> case. do. if. (56320&> +. 57343&<:) {: t1=.2 {. t do. t=. }. t [ a=.a , < {. t else. t=.2 }. t [ a=.a , < t1 end.
>> end.
>> end.
>> }.a
>> )
>> boxuni_jig_ 9 u: 128512
>> ┌──────┐
>> │128512│
>> └──────┘
>> boxuni_jig_ 7 u: 128512
>> ┌───────────┐
>> │55357 56832│
>> └───────────┘
>> 7 u: 55357 56832
>>
>> 7 u: 55357 NB. incomplete code breaks into nondisplayable characters.
>> ���
>>
>> The real challenge with unicode is that you get can deep into the weeds pretty fast.
>>
>> I'll try to come up with something in the next couple of days. Anyone's suggestions on the best way to approach this are welcome.
>>
>> Cheers, bob
>>
>>> On Sep 3, 2019, at 7:04 PM, Henry Rich <henryhrich at gmail.com> wrote:
>>>
>>> The introductory page for Unicode
>>>
>>> https://code.jsoftware.com/wiki/Vocabulary/UnicodeCodePoint
>>>
>>> does not discuss 4-byte characters, or the concept of surrogate pairs with 2-byte characters.
>>>
>>> 4-byte precision is called unicode4 in NuVoc. If someone would add discussion of these to the page, they would be a Hero. I'm just saying.
>>>
>>> Henry Rich
>>>
>>> ---
>>> This email has been checked for viruses by AVG.
>>> https://www.avg.com
>>>
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
More information about the Programming
mailing list