---
name: "RkMapPhonogram"
section: "3"
platform: "linux"
package: "libcanna1g-dev"
version: "3.7p3-25"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/RkMapPhonogram"
---

# RkMapPhonogram(3)

perform Romaji-kana conversion by using a specified Romaji-kana conversion table

## NAME

***RkMapPhonogram*** - perform Romaji-kana conversion by using a specified Romaji-kana conversion table

## SYNOPSIS

```
#include <canna/RK.h>
int RkMapPhonogram(romaji, dst, maxdst, src, srclen, flags, ulen,
                  dlen, tlen, rule)
struct RkRxDic *romaji;
unsigned char *dst;
int maxdst;
unsigned char *src;
int srclen;
int flags;
int *ulen;
int *dlen;
int *tlen;
int *rule;
```

## DESCRIPTION

*RkMapPhonogram* performs Romaji-kana conversion by using a specified Romaji-kana conversion table.  *romaji* specifies a pointer to the Romaji-kana conversion table that has been returned by *[RkOpenRoma(3)](/RkOpenRoma/3.md)*.  *RkMapPhonogram* interprets the *srclen* bytes of contiguous data starting at the area *src* as a Romaji character string and searches through the Romaji-kana conversion table for the rule of Romaji-kana conversion that matches the beginning of the Romaji character string.  If the corresponding conversion rule is found, the area *dst* is loaded with the corresponding kana character string, with *dlen* being set to its byte length.  The resulting character string is truncated when its byte length exceeds *maxdst* -1.

*flags* is a combination of the following Romaji-kana conversion flags connected by or:

- RK\_SOKUON

  Enables gemination, in which a sequence of two occurrences of the same character, xx, is converted to small kana character "tsu" only if it is not defined in the Romaji-kana conversion table file.  This process provides for situations in which an obsolete Romaji-kana conversion table is used.

- RK\_FLUSH

  Converts all Romaji characters compulsorily.  Useful for handling n appearing at the end of a character string.

*ulen*, *dlen*, and *tlen* are used to manage the progress of Romaji-kana conversion.

For example, if the character string "tt" is given to *RkMapPhonogram*, the first "t" is submitted to Romaji-kana conversion, with *dst* being set to small kana character "tsu".  The remaining "t" is put to reuse for Romaji-kana conversion.  When "a" is entered subsequently, it is combined with the "t" left from the previous run of *RkMapPhonogram* to generate kana character "ta".

*ulen* is set to the byte length of the characters from *src* used for Romaji-kana conversion.

*dlen* is set to the byte length of the kana characters derived from Romaji-kana conversion.

*tlen* is set to the byte length of the character string to be used in the next run of Romaji-kana conversion.  The character string led by *tlen* is placed after the character string resulting from Romaji-kana conversion in the *dst* buffers.

If null pointers are specified in *ulen*, *dlen*, and *tlen*, these parameters do not return any values and are simply ignored.

*rule* is used to exchange information about the *rule* of Romaji-kana conversion.  When calling *RkMapPhonogram* for the first time, specify a pointer to a variable loaded with 0.  Upon return from the first call to *RkMapPhonogram*, that variable is loaded with internal information about the rule of Romaji-kana conversion, in place of 0.  To continue Romaji-kana conversion, specify the same pointer to the variable to *RkMapPhonogram*.

## RETURN VALUE

This function returns information about whether the character string set in *dst* has been converted by using a rule existing in the Romaji-kana conversion table or not.  The function returns 1 if a rule existing in the Romaji-kana conversion table has been used; otherwise, it returns 0.
