Legendas de Letras de Música Japonesa: Segmentação, Sincronização, Notação e Tipografia
0. O que esta skill resolve
Os quatro erros mais comuns em legendas de letras de música japonesa, todos com a aparência de "ok, mas um japonês nota imediatamente":
- Divisão uniforme do tempo — uma frase de 5,7 segundos com 16 sílabas, 0,36 segundos por sílaba. Na realidade, a duração cantada varia em até 3 vezes.
- Quebra no meio de uma palavra —
君 / を見るたび. Partículas não podem iniciar uma linha. - Hiragana completo — letras escritas exclusivamente em hiragana para TTS/modelos generativos, que para leitores japoneses parecem livros infantis.
- Tempo de entrada ancorado em "pontos de mudança de altura" — confunde a nota de final de frase com o início da próxima, adiantando a frase inteira em meio segundo.
1. Oito Regras Rígidas
| # | Regra | Contraexemplo |
|---|---|---|
| R1 | Ponto de quebra apenas em limites de bunsetsu. Substantivo + partícula, verbo + auxiliar não podem ser separados | ✗ 君/を見るたび ✗ 見/てるのに |
| R2 | Tempo de entrada de cada segmento = início real cantado da primeira sílaba do segmento. ⛔ Proibido dividir uniformemente | ✗ (end-start)/n × k |
| R3 | Máximo de 3 segmentos de saída por frase, preferencialmente 2 | ✗ 君を/見る/たび |
| R4 | Sem pontuação; espaços entre segmentos com espaço de largura total | ✗ 君を、見るたび |
| R5 | Regras de quebra de linha (JIS X 4051): kana pequeno ゃゅょっ, vogal longa ー, sokuon, colchetes de fechamento não podem iniciar linha | ✗ Linha começando com っ |
| R6 | Máximo de 16 caracteres por linha (padrão Netflix para legendas japonesas) | — |
| R7 | O texto não desaparece após a saída (acumulação), senão o espectador perde contexto | ✗ Apagar o primeiro segmento ao mostrar o segundo |
| R8 | A tipografia de fundo grande deve conter todos os caracteres da frase, verificação caractere por caractere missing deve estar vazio | ✗ Fundo apenas com a segunda metade da frase |
Por que R1 é bunsetsu e não "palavra": O japonês não tem espaços; a quebra automática de linha ocorre apenas no limite da caixa. O leitor respira por bunsetsu — 君を/見るたび são duas respirações. Método de verificação: leia o segmento em voz alta; se parecer uma única inspiração, está correto.
2. Tempo de Entrada Medido (Essencial, Não Estime)
2.1 Pré-requisito
É necessária a faixa de voz separada (Demucs / htdemucs vocals.wav). A faixa mixada contém bateria e baixo, cujos picos de energia são golpes de bateria.
python scripts/measure_lyric_onsets.py --vocal vocals.wav --lines lines.json --out timing.json
lines.json tem a seguinte aparência (kana para contagem de sílabas para determinar posição esperada, disp é a notação de tela):
[{"id": 9, "start": 42.26, "end": 48.00,
"kana": ["きみを", "みるたび", "しんぞうがとまるの"],
"disp": ["君を", "見るたび", "心臓が止まるの"]}]
2.2 Algoritmo (Três Etapas; Faltar Uma Etapa Causa Erro)
- Extrair F0:
librosa.pyin(fmin=150, fmax=900, hop_length=128), em seguida aplicar filtro de mediana em F0 para remover vibrato. - Extrair limites candidatos: Saltos de altura ≥0,8 semitons ∪
librosa.onset.onset_detect(delta=0.30, wait=3). - ⛔ Filtro de limite (etapa mais crítica): O ponto candidato deve satisfazer SIMULTANEAMENTE:
- Energia nos 40ms seguintes não inferior a 55% da energia dos 40ms anteriores (não é uma queda abrupta)
- Proporção de quadros com F0 não NaN nos 180ms seguintes ≥60% (ainda há alguém cantando)
Em seguida: para cada bunsetsu, calcula a posição relativa esperada como "sílabas acumuladas / total de sílabas" e a ancora no limite válido mais próximo.
2.3 Por que a Etapa 3 Não Pode Ser Omitida (Exemplo Prático)
Para "君を見るたび 心臓が止まるの", o び termina com uma entonação descendente em 44,87s (F2# → final), silêncio de 0,33s antes de しんぞう começar em 45,24s.
- Apenas etapa 2 → limite capturado em 44,81 (entonação descendente de
び), adiantando "心臓が止まるの" em 0,43s. - Apenas etapa 3, primeira condição (relação de energia 40ms) → ainda errado. A energia em 44,81 ainda não caiu; a janela de 40ms é muito curta.
- Adicionando "ainda há voz nos 180ms seguintes" → 45,17s, diferença de 0,07s em relação à verificação manual. ✅
⇒ "Ainda há alguém cantando depois" é mais eficaz para distinguir troca de palavra de final de frase do que "a energia neste momento é alta".
2.4 Quando Esta Regra Também Falha
- Frases em inglês: sem plataforma de altura, pyin não detecta limites silábicos. Apenas divisão proporcional ao tempo, com anotação clara "estimado".
- Melismas (uma sílaba para várias notas): número de plataformas de altura > número de sílabas; a ancoragem será tendenciosa. Requer audição manual.
- Frases com erro de ancoragem >0,45s: marcar todas como
UNSUREe passar para revisão manual, não tratar como precisas.
2.5 ⛔⛔ Primeiro Valide a "Janela de Tempo" de Cada Frase, Depois Fale de Segmentação Interna
Esta é uma armadilha mais upstream do que §2.3 e a mais facilmente ignorada.
A maioria dos arquivos de linha do tempo de letras (lyrics.ts / SRT / LRC) tem start/end cortados linearmente por número de linhas ou estimados manualmente, não ouvidos frase por frase. Ao usar esses arquivos para legendas, a segmentação interna pode ser precisa, mas a frase inteira está deslocada.
Sintoma: A legenda está 1–4 segundos adiantada ou atrasada em relação à voz e deriva cada vez mais conforme avança (porque é uma extensão linear). O usuário não percebe no refrão (a janela do refrão geralmente está correta), mas percebe a falta de sincronia nos primeiros versos.
Correção: Reancorar cada frase usando intervalos de respiração.
Na faixa de voz separada, há silêncio entre as frases. Este é o limite mais forte, sem necessidade de modelo:
rms = librosa.feature.rms(y=vocal, frame_length=1024, hop_length=128)[0]
e = rms / rms.max()
quiet = e < 0.055 # Limiar relativo, suficiente na prática
# Sequência contínua de quiet >= 0.16s registrada como intervalo de respiração
Em seguida: O segmento sonoro entre dois intervalos adjacentes é uma frase musical.
Exemplo prático (mesma música):
Intervalo 0,00-12,12 (introdução sem canto)
Som 12,12-13,73 ← ドアのとこで
Intervalo 13,73-14,67
Som 14,67-16,59 ← 立ち止まってる
Intervalo 16,59-17,07
Som 17,07-17,98 ← 本当は
Enquanto a tabela de letras escreve "Frase 1 12,00–15,75" "Frase 3 a partir de 19,50" — a Frase 3 realmente começa em 23,63s, 4,1s adiantada.
⭐ Critério: Compare o número de segmentos sonoros detectados com o número de bunsetsu nesta seção da letra.
- Quantidade igual ⇒ este cantor respira em cada bunsetsu, correspondência 1:1, precisão de milissegundos, sem adivinhação.
- Quantidade menor ⇒ há melisma, use o método de altura de §2.2 para encontrar limites internos da frase.
- Quantidade maior ⇒ limite muito frouxo, aumente
0.055ou estenda0.16.
⛔ Não use "contagem de picos de energia" para substituir a detecção de respiração: um vibrato em uma nota longa pode produzir vários picos. Na prática, uma frase de 16 sílabas foi contada como 33 picos de energia, completamente inútil.
⛔ Também não use "normalização por mediana móvel + limiar raso" para encontrar respirações fracas: em versos podem aparecer 23 intervalos falsos (valor real 19), indistinguíveis de ruído. Melhor ancorar apenas as frases com silêncio duro e marcar claramente as restantes como "remapeado/estimado".
3. Notação: Kanji-Kana-Majiri
Tabelas de letras (especialmente letras geradas por IA) são frequentemente escritas em hiragana completo. Na tela, devem ser convertidas para notação kanji comum.
| Hiragana completo (rascunho da letra) | Notação de tela |
|---|---|
| きみをみるたび | 君を見るたび |
| ほんとは / きみのほう | 本当は / 君のほう |
| なかに | 中に |
| においだけで | 匂いだけで |
| いちばんとおい | 一番遠い |
| こわれちゃいそう / ちかづくと | 壊れちゃいそう / 近づくと |
| たちどまってる | 立ち止まってる |
| わたしのあかし | 私の証 |
⛔ Não exagerar na kanjização: すきだよって não deve ser escrito como 好きだよって… na verdade, deve ser escrito (好き). Mas advérbios/partículas finais coloquiais como なっちゃう, ずるいよね, なんてかな mantêm-se em hiragana — kanjizar tudo fica artificial. Critério: Esta palavra geralmente é escrita em kanji em romances/letras de música japonesas? Em caso de dúvida, mantenha em hiragana.
4. Parâmetros de Tipografia (Com Fontes, Não Invente)
Os valores abaixo vêm da engenharia reversa quantitativa de quatro MV comerciais de anime (1280×720 base convertida para 1080p):
| Item | Valor em 1080p |
|---|---|
| Altura da letra principal | 97~108px |
| Letra pequena de narração | 53px |
| Frase de destaque no refrão | 124px |
| Letra de fundo gigante | 270~670px |
| Linha de base inferior | y ≈ 950~1004 |
| Largura máxima por linha | ≤1747px (≤91% da largura do quadro) |
⭐ Descoberta mais importante: MV comerciais geralmente têm letras principais "sem fundo", texto branco + contorno escuro de 2~3px. Apenas em frases de destaque usam faixa branca de largura total + texto preto. Adicionar um fundo arredondado a cada frase é a principal fonte de amadorismo.
Não mude o esquema de cores no meio da música: um vídeo tem apenas um matiz principal; o refrão apenas aumenta a saturação, não muda o matiz.
4.1 Múltiplas Colunas Verticais = Segmentação Visualizada
Na horizontal, use espaço de largura total como separador; visualmente, parece "sem segmentação". Na vertical, organize cada bunsetsu em uma coluna, da direita para a esquerda; a segmentação torna-se a própria tipografia:
君を | 見るたび | 息が止まるの
Coluna direita Coluna central Coluna esquerda
As posições das colunas são fixas pelo número do bunsetsu (o k-ésimo segmento está sempre na k-ésima coluna); quando um novo segmento aparece, as colunas existentes não se movem — caso contrário, todo o bloco de texto saltaria horizontalmente a cada saída.
4.2 Limite Físico da Escrita Vertical (Calcule Antes de Definir o Tamanho)
Uma linha de n caracteres, espaçamento de linha 1,46: altura necessária = n × tamanho da fonte × 1,46. Altura disponível 940px em 1080p ⇒ tamanho máximo da fonte = 940 / (n × 1,46).
- 8 caracteres (心臓が止まるの) → 79px, abaixo do mínimo de 97px
- 6 caracteres → 107px ✅
⇒ Frases longas com mais de 7 caracteres não cabem no intervalo de tamanho da fonte principal na vertical; devem ser alteradas para horizontal em duas linhas. Calcule primeiro, não espere até o final da composição.
5. Autoverificação (Imprimir Sempre; Não Fazer Resulta em Erro de Entrega)
python scripts/check_lyric_coverage.py --timing timing.json --disp disp.json
A saída deve satisfazer SIMULTANEAMENTE:
COVER line='君を見るたび' missing=[] OK=True
ORDER sub_a='君を' sub_b='見るたび' concat_equals_full=True
Se missing não estiver vazio ⇒ esta versão não pode ser entregue. ORDER verifica se a concatenação é igual à frase completa (evita caracteres faltantes/duplicados).
6. Uma Coisa a Fazer Antes de Começar
Primeiro, faça um grep nas especificações de legenda nos documentos do projeto. Os tamanhos de fonte, paletas de cores, presença ou ausência de fundo já decididos para este projeto geralmente estão em 02_文档/ ou docs/ em algum arquivo de análise/decisão:
grep -rn -E "字幕|字体|排版|几何|字高|描边|底板" docs/ 02_文档/ | head -40
⛔ Não decida por conta própria "acho que fica melhor assim" — isso certamente entrará em conflito com as especificações já decididas, e o custo de retrabalho é a re-renderização de todo o vídeo. A seção 4 desta skill foi forçada por esta lição.
7. Registro de Medição Prática (Para Calibrar Expectativas)
Uma música japonesa a 163,994 BPM, primeira frase do refrão:
| Sílaba | き | み | を | み | る | た | び |
|---|---|---|---|---|---|---|---|
| Início (s) | 42,31 | 42,76 | 43,09 | 43,41 | 43,61 | 43,98 | 44,18 |
| Altura | B3 | E4 | F#4 | G#4 | F#4 | F4 | F#4 |
7 sílabas ↔ 7 plataformas de altura correspondentes ⇒ este refrão é uma nota por sílaba. Em uma música com muitos melismas, o número de plataformas será menor que o número de sílabas; a ancoragem deve ser marcada como UNSURE.
8. ⛔ BPM Não é uma Grade (Deriva Medida na Prática)
O campo bpm de uma música só pode ser usado como etiqueta, não para calcular pontos de corte. Na prática: uma faixa de 128,28 → 132,39 BPM (468ms → 453ms por batida), uma grade fixa no compasso 30 já está uma batida inteira atrasada.
- Use
beats[](já ancorados a onsets) +bars[].startpara obter tempo real beatspara pontos de impacto (corte de cena, flash, texto);beats_smoothpara movimento contínuo (velocidade da câmera, loop)- ⛔ Nunca escreva
t0 + n * 60 / bpm - Número do compasso ≠ índice do array: quando há um pickup,
bars[].indexdifere da posição; procure pelo índice
9. ⛔ Timestamps de Palavras do ASR São Prematuros, Não Podem Ser Usados como Tempo de Entrada
Erro medido na prática: 0,04–2,0 segundos, mediana 0,62 segundos; pior após notas longas. ⇒ Use ASR apenas para obter início aproximado de cada frase (±1s); para entrada precisa, use alinhamento forçado (MMS CTC / torchaudio). Critério: erro de início de frase ≤0,15s para ser considerado preciso.
10. ⛔ Lista de Alucinações do Whisper (Apagar se Aparecer)
Em silêncio, respiração, vocalizações, pode gerar:
- 「ご視聴ありがとうございました」(já cobriu 0,6–103 segundos)
- 「チャンネル登録…」
- 「作詞・作曲・編曲 初音ミク」
- Palavras curtas repetidas,
ラララ…
⇒ Regra: Use a letra oficial como referência; apenas na ausência de letra oficial use a transcrição, e compare frase por frase com o texto oficial (diferenças não detectam "frase inteira faltando"). ⇒ VAD deve estar desligado (Silero confunde vogais cantadas); a faixa de voz separada > qualquer aprimoramento DSP.
11. Marcação LRC (Mini-linguagem de Animação de Letras)
| Marcação | Função |
|---|---|
FraseA/FraseB | Força quebra de linha; as duas metades tornam-se beats diferentes |
*palavra* | Destaque: maior + componente de impacto + cor de destaque |
! no final da linha | Linha de destaque (tratamento mais forte, pode incluir flash/tremedeira) — 1–2 linhas por seção do refrão |
[間奏] | Linha instrumental: impede que a linha anterior ocupe espaço sem desaparecer |
⛔ Não Repetir Compensação de Antecedência: Os motores de legenda geralmente já têm embutido "0,2s antes da voz"; se seu eixo de tempo já subtraiu 0,2s, adicionar novamente resultará em 0,4s de antecedência.
12. Compasso de Parada no Final do Refrão
Os compassos no final do refrão onde a banda sai e fica quase a cappella são o lugar mais importante de todo o vídeo para colocar a imagem principal, não o momento de sair. Não trate como "aqui não tem bateria, então coloque qualquer coisa".
13. ⭐ Comparação Prática de Cinco Ferramentas de Alinhamento Forçado para Letras Japonesas
Fonte: benchmark de terceiros (20 segmentos, incluindo chinês/inglês/japonês); a tabela abaixo mostra a coluna japonês.
| Ferramenta | Erro de início (mediana) | Erro de fim (mediana) | Cobertura | Veredito |
|---|---|---|---|---|
| MMS_FA (torchaudio) | 0,08 s | 0,11 s | 8/8 | ✅ Única que atende |
| whisper-timestamped | — | 0,16 s | 8/8 | ⚠️ Segunda opção |
| WhisperX | — | 1,67 s (p90 2,81) | 8/8 | ❌ Cobre tudo, mas bordas instáveis |
| NeMo NFA | — | — | 0/8 | ❌ Sem pré-treinamento CTC em japonês |
| aeneas | 2,70 s | 3,66 s | 8/8 | ❌ Falhou |
⛔ aeneas não é adequado para canto: Sua própria documentação afirma "Áudio é assumido como fala: não adequado para legendas de música". Na prática, erro de 2,7–3,7s em japonês, pior do que divisão uniforme.
⇒ Para erro ≤0,15s, apenas MMS_FA. Os demais não atendem.
⚠️⚠️ Mas a licença do MMS_FA é CC-BY-NC (não comercial). Se formos comercializar no Steam, precisamos de outro acordo de licenciamento, ou usar apenas para alinhamento interno, sem distribuir pesos de modelo com o produto. Esta questão deve ser verificada antes da comercialização.
⚠️ MMS_FA depende de uroman para romanização de línguas não latinas; em texto misto kanji-kana, o p90 pode chegar a 2,53s ⇒ deve ser verificado frase por frase.
14. Os Dois Valores de Antecedência Não São a Mesma Coisa
| Valor | Propósito | Fonte |
|---|---|---|
| 0,15–0,25 s | Para que o espectador possa ler (antecedência de leitura) | Padrão do motor de legenda "texto 0,2s antes da voz" |
| 0,03–0,05 s | Para que o espectador possa acompanhar o canto (sensação de alinhamento de karaokê) | Prática de outro vídeo de letras |
⇒ A escolha depende se este vídeo é "para ler" ou "para cantar junto". Fazemos "para ler" ⇒ use 0,15–0,2s. ⛔ Não somar ambos.
15. Regras Práticas de Composição Vertical (Não é "Apenas Colocar o Texto na Vertical")
| Regra | Prática |
|---|---|
| Pontuação | Ocupa uma célula, escrita no canto superior direito da célula (horizontal é canto inferior esquerdo) |
| Kana pequeno (っ ゃ ゅ ょ) | Ocupa uma célula, escrito no canto superior direito dentro da célula |
| Yōon (きゃ) | Considerado dois kanas, cada um ocupa uma célula |
| Sinal de vogal longa 「ー」 | Ocupa uma célula |
| Início de parágrafo | Recuo de uma célula |
| ⛔ Regra de quebra | Pontuação não pode aparecer no início de uma linha |
| Pontuação no final da linha | Se a pontuação no final da frase cair no final da linha sem célula, escreva fora da célula ou na mesma célula do último caractere |
| Números | Na vertical, use numerais kanji; na horizontal, use algarismos arábicos (1–2 por célula) |
⇒ Nossa composição vertical atual é "cada caractere empilhado em uma linha" sem tratar a posição da pontuação, o deslocamento do kana pequeno, o recuo do início do parágrafo. Adicionar esses três itens fará com que um leitor japonês pense imediatamente "está correto".
16. Critério de Velocidade de Leitura: 4 cps é Padrão de Legendas de Transmissão, Não de Letras (Inclui Medição Deste Projeto)
⚠️ Distribuição de confiabilidade: Nível B (Diretrizes de estilo JA do AVTpro (certificação de legendas japonesas), especificações públicas de duas empresas de legendas, três fontes com consistência cruzada); "Como usar a letra" é minha inferência, Nível D — já anotado claramente, não usar como evidência.
16.1 Números Duros de Três Fontes (Parte Mutuamente Consistente)
| Item | AVTpro JA (Padrão de certificação) | GoLocalise | DMPJ | Adotado |
|---|---|---|---|---|
| Velocidade máxima de leitura | 4,0 cps | 12 caracteres/s (≈limite superior diferente) | ~4 caracteres/s | 4,0–5,0 cps |
| Caracteres por linha (horizontal) | 15 caracteres | 16 caracteres | 13–16 caracteres | ≤15 |
| Caracteres por linha (vertical) | 11 caracteres | — | — | ≤11 |
| Número de linhas na tela | 2 | 2 | 2 | 2 |
| Exibição mínima | 20 quadros (0,8s @25fps) | 1s | 1,5s | ≥0,8s |
| Exibição máxima | 6s (letras podem ser 7s) | 7s | — | 6s (letras 7s) |
| Tratamento de pontuação | 。→ espaço de largura total; 、→ espaço de meia largura | — | — | Igual AVTpro |
| Fonte | ゴシック | — | Gothic prioritário (legibilidade) | ゴシック |
⭐ Duas confirmações de nossas decisões existentes:
- "⛔ Sem pontuação" está correto — a prática oficial do AVTpro é substituir pontuação por espaços (。→largura total, 、→meia largura). Nós simplesmente omitimos a pontuação, efeito equivalente e mais limpo ⇒ R7 não precisa ser alterada.
- "ゴシック体" está correto — usamos Yu Gothic Bold, que é ゴシック, direção correta (mas licenciamento de fonte problemático, veja §17).
16.2 ⛔ Mas 4 cps Não Pode Ser Aplicado Diretamente a Letras (Minha Inferência, Nível D)
A razão de existência de 4 cps: diálogos incompreensíveis exigem releitura; a legenda é o único canal de informação. Enquanto as letras são cantadas simultaneamente — o espectador vê a palavra no mesmo segundo em que a ouve, sem precisar "ler e depois entender".
⇒ As legendas de letras não devem ser projetadas para "ler", mas para "cantar junto". (O próprio AVTpro permite uma exceção para letras: o tempo máximo de exibição é estendido de 6s para 7s, indicando que a indústria reconhece as letras como uma categoria diferente.)
⚠️ Mas isso não significa "a letra pode ser excessivamente rápida". Acima de ~6 cps, até "cantar junto" se torna impossível, porque o olho não consegue encontrar o caractere atual. ⇒ Critério prático: pico cps ≤5,0 aceitável, 5,0–6,0 precisa de melhoria, >6,0 deve alterar a tipografia (quebra de linha / duas linhas simultâneas / encurtar bunsetsu).
16.3 Medição Prática Deste Projeto (lyric_timing_v2.json, 22 linhas / 52 bunsetsu)
| Critério | Resultado |
|---|---|
| Por linha inteira (v7 atual WHOLE_LINE) | 22 linhas: 5 linhas >4,0 cps, pior L5 = 5,30 cps (16 caracteres / 3,02s) |
| Por bunsetsu (se revertido para aparecimento por bunsetsu) | 52: 11 >4,0 cps (21%), pior L3「ポケットのなかに」6,90 cps |
| Caracteres por coluna vertical | Máximo 16 caracteres → duas colunas de 8 caracteres cada, não excede 11, OK |
⇒ Conclusão em dois níveis, não misturar:
- Pelo critério estrito de 4,0 cps: 5 linhas reprovadas, mas pelo critério de letras de §16.2 (≤5,0) apenas L5 com 5,30 precisa ser tratada.
- ⛔ Se revertido para aparecimento por bunsetsu, 21% dos bunsetsu excederão 5–7 cps ⇒ Esta é a base quantitativa para a decisão de saída em linha inteira (originalmente mudamos para WHOLE_LINE apenas com base na intuição de que "bunsetsu individual induziria verificação de sincronia", agora temos números).
16.4 ⭐ Defeito Real Encontrado de Passagem: Linha do Tempo de L3–L7 é Calculada por Divisão Igual
| Sintoma | L3–L7 cinco linhas consecutivas com duração exatamente 3,02s, e início/fim perfeitamente alinhados (23,63→38,72 = 15,09s ÷ 5) |
|---|---|
| Causa raiz | A detecção de intervalo de respiração nesta seção (legato, sem respiração entre as notas) não encontra gap, REMAP degrada para divisão igual, e não emite aviso |
| Contraprova prática | Varrendo 4 limiares × 2 durações mínimas em 22–44s, o silêncio real tem apenas 7 locais (22,63 / 23,01 / 24,24 / 25,60 / 28,29 / 31,43 / 41,55), nenhum em 26,65 / 29,67 / 32,69 / 35,70 / 38,72 ⇒ esses cinco limites não foram medidos |
| Por que é difícil de detectar | O campo source escreve apenas REMAP, sem distinguir entre "remapeamento com base" e "divisão igual como fallback" |
| Correção (não feita, parte do programa) | ①Dividir REMAP em REMAP_ANCHORED / EQUAL_DIVIDE, este último deve imprimir um aviso ②Ao usar divisão igual como fallback, emitir simultaneamente cps; se ultrapassar 5,0, marcar diretamente como vermelho ③Para seções legato, usar continuidade de altura pyin para determinar limites, não silêncio |
⛔ Este é outro exemplo de "critérios parecem todos verdes, mas são falsos": missing=[] apenas indica "cada linha tem tempo", não "o tempo foi medido".
17. ⛔ Licenciamento de Fonte: Atualmente Usamos Fontes do Sistema Windows, Comercialização com Risco (Nível B)
⚠️ Confiabilidade B (páginas de licenciamento oficial / FAQ originais de vários fabricantes de fontes, lidas uma a uma, não relatos de segunda mão)
17.1 Quatro Categorias de Licenciamento, Muito Diferentes
| Fonte | Legendas em vídeo | Uso comercial | Observações |
|---|---|---|---|
| SIL OFL 1.1 (Noto/Source Han, M PLUS, Zen Maru, Kosugi, Shippori, 侵食明朝…) | ✅ | ✅ Sem atribuição | Única regra: ⛔ Não vender o arquivo de fonte separadamente; alterações devem usar a mesma licença |
| IPA Font License 1.0 (IPAex, こころ明朝…) | ✅ Claramente permite "conteúdo de imagem" | ✅ | ⛔ Nomes derivados não podem conter "IPA"; redistribuição deve acompanhar a licença |
| ヒラギノ (integrada ao macOS) | ✅ Produto pode ser vendido/distribuído | ✅ | ⛔ Mas proíbe explicitamente "criar dados em uma forma que funcione como fonte em conteúdo digital"; e vinculada ao macOS, usá-la no Windows = extrapolação |
| Bibliotecas comerciais como 日本書技研究所 | ⚠️ Requer compra | Requer licença comercial | Rótulo de imagem de vídeo: ¥22.000–55.000 dependendo do capital social |
| ことり文字ふぉんと Pro | ✅ (inclui monetização do YouTube) | ✅ | ⚠️ Mas "Incorporação/fonte web" é proibida ⇒ Queimar no vídeo ≠ incorporar fonte, são itens diferentes em cláusulas diferentes |
⭐ Distinção chave (a mais fácil de errar): "Queimar texto no quadro" e "incorporar o arquivo de fonte em um documento/página web" são dois atos diferentes, sujeitos a cláusulas diferentes. O primeiro produto são pixels, geralmente tratado como "material de saída"; o segundo é entregar o arquivo de fonte. ⛔ Não interprete a "proibição de incorporação" do ことり como "proibido fazer vídeos" — seu próprio FAQ afirma que "uso em vídeos" é explicitamente OK.
17.2 Nosso Estado Atual
| Item | Valor |
|---|---|
| Fonte atual | C:\Windows\Fonts\YuGothB.ttc (Yu Gothic Bold, integrada ao Windows) |
| Direção do glifo | ゴシック ✅ (consistente com a recomendação de legibilidade de §16.1) |
| Status de licenciamento | ⚠️ Não verificado. Fontes integradas ao Windows vinculadas à licença do SO; queimar em produto comercial (DLC Steam) é área cinzenta, não explicitamente permitido |
⇒ Sugestão: Trocar para fonte OFL (custo zero, claramente comercializável, sem atribuição). Candidatos por estilo:
| Candidato | Licença | Estilo | Adequação |
|---|---|---|---|
| Zen Maru Gothic | OFL | Arredondado, suave | ⭐ Mais próximo do nosso tom rosa/roxo/fofo |
| Shippori Mincho | OFL | Mincho com emoção forte | Adequado para versos líricos, mas com tensão com "fofo" |
| M PLUS 1p | OFL | Geométrico, moderno | Neutro e seguro |
| Noto Sans JP | OFL | Mais neutro | Fallback, sem erro |
⚠️ Trocar fonte = alterar sensação visual, deve ser aprovado pelo Ronny após inspeção visual, ⛔ Não me é permitido trocar unilateralmente (é uma alteração na "camada visual", sujeita à regra de ferro do usuário de que ele deve ver).