[Tts-project] Bug#1108634: unblock: speech-dispatcher/0.12.0-5

Samuel Thibault sthibault at debian.org
Wed Jul 2 01:00:45 BST 2025


Package: release.debian.org
Severity: normal
X-Debbugs-Cc: speech-dispatcher at packages.debian.org
Control: affects -1 + src:speech-dispatcher
User: release.debian.org at packages.debian.org
Usertags: unblock

Hello,

I have uploaded speech-dispatcher/0.12.0-5 for Trixie.

[ Reason ]
Version 0.12.0 introduced a regression in punctuation processing.

Normally the user change choose between speech-synthesizing no
punctuation, some punctuation, most punctuation, or all punctuation,
dependening on the level of details they would like to hear at different
times. This however got broken in 0.12.0 when reworking the punctuation
processing. This got fixed in 0.12.1, but that version was released
after the Trixie freeze.

This is a regression over Bookworm.

[ Impact ]
As reported upstream on
https://github.com/brailcom/speechd/issues/1036
some speech syntheses would pronounce some punctuations, others
wouldn't, making the user experience really bad because they can't
really control any more the level of punctuation being spoken.

[ Tests ]
This was tested manually.

[ Risks ]
The code comes from upstream and is very simple, it reverts the faulty
commit
https://github.com/brailcom/speechd/commit/f9622994cbd43ce67f992f87337fbb0174792a21
and installs a better solution instead which boils down to two "if"s
https://github.com/brailcom/speechd/commit/7cd788acede8604d77f433c393510175ddf8eb43

The large diff of locale/base/symbols-fallback.dic and
locale/base/symbols.dic is actually just a mere file rename getting
reverted, without file content change.

There is also a trivial fix for the blhc report blaming FLAGS issues
which actually come from libtool.

[ Checklist ]
  [X] all changes are documented in the d/changelog
  [X] I reviewed all changes and I approve them
  [X] attach debdiff against the package in testing

unblock speech-dispatcher/0.12.0-5

Thanks,
Samuel
-------------- next part --------------
diff -Nru speech-dispatcher-0.12.0/debian/changelog speech-dispatcher-0.12.0/debian/changelog
--- speech-dispatcher-0.12.0/debian/changelog	2025-05-06 21:23:58.000000000 +0200
+++ speech-dispatcher-0.12.0/debian/changelog	2025-07-02 01:34:43.000000000 +0200
@@ -1,3 +1,10 @@
+speech-dispatcher (0.12.0-5) unstable; urgency=medium
+
+  * rules: Be more precise in blhc ignore.
+  * patches/git-punctuation: Fix punctuation levels.
+
+ -- Samuel Thibault <sthibault at debian.org>  Wed, 02 Jul 2025 01:34:43 +0200
+
 speech-dispatcher (0.12.0-4) unstable; urgency=medium
 
   * patches/git-generic-empty: Fix hang on empty uterances.
diff -Nru speech-dispatcher-0.12.0/debian/patches/git-punctuation speech-dispatcher-0.12.0/debian/patches/git-punctuation
--- speech-dispatcher-0.12.0/debian/patches/git-punctuation	1970-01-01 01:00:00.000000000 +0100
+++ speech-dispatcher-0.12.0/debian/patches/git-punctuation	2025-07-02 01:34:43.000000000 +0200
@@ -0,0 +1,1357 @@
+commit d5059639cb934c965cb752bfe46fb845c5adbce8
+Author: Samuel Thibault <samuel.thibault at ens-lyon.org>
+Date:   Sun Apr 6 17:45:03 2025 +0200
+
+    Revert "Process base symbols after other dictionaries"
+    
+    This reverts commit f9622994cbd43ce67f992f87337fbb0174792a21.
+    
+    This was dropping the properties of the common NVDA symbols, such as
+    
+    ? sentence ending       question        all     always
+    
+    which are not specified in all translated files, they assume that the
+    base file always provide them.
+    
+    (cherry picked from commit feff809182f2bade36da1e610fc6bc02c167988e)
+
+commit 8a1eb8a334ef378be50cbc581a6dd393ec3dfd01
+Author: Samuel Thibault <samuel.thibault at ens-lyon.org>
+Date:   Sun Apr 6 17:53:20 2025 +0200
+
+    Do not add symbols from base/symbols.dic when they are not in <locale>/symbols.dic
+    
+    E.g. ? is in base/symbols.dic, but not in fr/symbols.dic, so we do not
+    want to take the definition from base/symbols.dic, and let emojis.dic
+    provide a definition.
+    
+    This is the same goal as f9622994cbd43ce67f992f87337fbb0174792a21, but
+    without losing base/symbols.dic providing symbol default properties.
+    
+    (cherry picked from commit 7cd788acede8604d77f433c393510175ddf8eb43)
+
+---
+ config/speechd.conf              |    1 
+ locale/Makefile.am               |    2 
+ locale/base/symbols-fallback.dic |  626 ---------------------------------------
+ locale/base/symbols.dic          |  626 +++++++++++++++++++++++++++++++++++++++
+ src/server/symbols.c             |   22 -
+ 5 files changed, 639 insertions(+), 638 deletions(-)
+
+--- a/config/speechd.conf
++++ b/config/speechd.conf
+@@ -174,7 +174,6 @@ SymbolsPreprocFile "symbols.dic"
+ SymbolsPreprocFile "emojis.dic"
+ SymbolsPreprocFile "orca.dic"
+ SymbolsPreprocFile "orca-chars.dic"
+-SymbolsPreprocFile "symbols-fallback.dic"
+ 
+ # The DefaultCapLetRecognition: if set to "spell", capital letters
+ # should be spelled (e.g. "capital b"), if set to "icon",
+--- a/locale/Makefile.am
++++ b/locale/Makefile.am
+@@ -19,7 +19,7 @@
+ 
+ nobase_localedata_DATA = \
+ 	base/font-variants.dic \
+-	base/symbols-fallback.dic \
++	base/symbols.dic \
+ 	\
+ 	af/emojis.dic \
+ 	am/emojis.dic \
+--- a/src/server/symbols.c
++++ b/src/server/symbols.c
+@@ -855,7 +855,7 @@ static SpeechSymbolProcessor *speech_sym
+ 			SpeechSymbol *sym;
+ 
+ 			sym = g_hash_table_lookup(ssp->symbols, key);
+-			if (!sym) {
++			if (!sym && syms != ssbase) {
+ 				/* This is a new simple symbol.
+ 				 * (All complex symbols have already been added.) */
+ 				sym = speech_symbol_new();
+@@ -879,15 +879,17 @@ static SpeechSymbolProcessor *speech_sym
+ 					multi_chars_list = g_slist_prepend(multi_chars_list, sym->identifier);
+ 				}
+ 			}
+-			/* If fields weren't explicitly specified, inherit the value from later sources. */
+-			if (sym->replacement == NULL)
+-				sym->replacement = g_strdup(source_sym->replacement);
+-			if (sym->level == SYMLVL_INVALID)
+-				sym->level = source_sym->level;
+-			if (sym->preserve == SYMPRES_INVALID)
+-				sym->preserve = source_sym->preserve;
+-			if (sym->display_name == NULL)
+-				sym->display_name = g_strdup(source_sym->display_name);
++			if (sym) {
++				/* If fields weren't explicitly specified, inherit the value from later sources. */
++				if (sym->replacement == NULL)
++					sym->replacement = g_strdup(source_sym->replacement);
++				if (sym->level == SYMLVL_INVALID)
++					sym->level = source_sym->level;
++				if (sym->preserve == SYMPRES_INVALID)
++					sym->preserve = source_sym->preserve;
++				if (sym->display_name == NULL)
++					sym->display_name = g_strdup(source_sym->display_name);
++			}
+ 		}
+ 	}
+ 
+--- a/locale/base/symbols-fallback.dic
++++ /dev/null
+@@ -1,626 +0,0 @@
+-?# This file was automatically generated by make import-symbols
+-# DO NOT MODIFY IT!
+-# See locale/README.md to know how to import dictionaries
+-
+-# A part of NonVisual Desktop Access (NVDA)
+-# Copyright (c) 2011-2023 NVDA Contributors
+-# This file is covered by the GNU General Public License.
+-
+-complexSymbols:
+-# identifier	regexp
+-# Sentence endings.
+-. sentence ending	(?<=[^\s.])\.(?=[\"'??)\s]|$)
+-! sentence ending	(?<=[^\s!])\!(?=[\"'??)\s]|$)
+-? sentence ending	(?<=[^\s?])\?(?=[\"'??)\s]|$)
+-# Phrase endings.
+-; phrase ending	(?<=[^\s;]);(?=\s|$)
+-: phrase ending	(?<=[^\s:]):(?=\s|$)
+-# Others
+-decimal point	(?<![^\d -])\.(?=\d)
+-in-word '	(?<=[^\W_])['?]
+-negative number	(?<!\w)[-?]{1}(?=[$???.]?\d)
+-
+-symbols:
+-# identifier	replacement[[	level][	preserve]][	# display name]
+-
+-# Complex symbols
+-. sentence ending	dot	all	always
+-! sentence ending	bang	all	always
+-? sentence ending	question	all	always
+-; phrase ending	semi	most	always
+-: phrase ending	colon	most	always
+-decimal point		none	always
+-in-word '	tick	all	norep
+-negative number	minus	none	norep
+-
+-# Whitespace
+-\0	blank	char	# null
+-\t	tab
+-\n	line feed	char
+-\f	page break	none
+-\r	carriage return	char
+- 	space	char
+-?	space	char	# no-break space
+-
+-# Standard punctuation/symbols
+-!	bang	all
+-"	quote	most
+-\#	number	some
+-$	dollar	all	norep
+-?	pound	all	norep
+-?	euro	all	norep
+-?	cents	all	norep
+-?	yen	all	norep
+-?	rupee	some	norep
+-?	florin	all	norep
+-?	currency sign	all	norep
+-%	percent	some
+-?	per mille	some
+-&	and	some
+-'	tick	all
+-(	left paren	most	always
+-)	right paren	most	always
+-*	star	some
+-,	comma	all	always
+-?	ideographic comma	all	always
+-?	arabic comma	all	always
+--	dash	most	always
+-.	dot	some
+-/	slash	some
+-:	colon	most	norep
+-;	semi	most
+-?	arabic semicolon	most
+-?	question	all
+-?	arabic question mark	all
+-@	at	some
+-[	left bracket	most
+-]	right bracket	most
+-\\	backslash	most
+-^	caret	most
+-_	line	most
+-`	graav	most
+-{	left brace	most
+-}	right brace	most
+-|	bar	most
+-?	broken bar	most
+-~	tilda	most
+-?	inverted exclamation point	some
+-?	inverted question mark	some
+-?	middle dot	most
+-?	single low quote	most
+-?	double low quote	most
+-?	prime	some
+-?	double prime	some
+-?	triple prime	some
+-
+-# Other characters
+-?	bullet	some
+-?	dot dot dot	all	always
+-...	dot dot dot	all	always
+-?	left quote	most
+-?	right quote	most
+-?	left tick	most
+-?	right tick	most
+-?	en dash	most	always
+-?	em dash	most	always
+-?	soft hyphen	most
+-?	hyphen bullet	none
+-?	circle	most
+-?	white circle	most
+-?	diaeresis	most
+-?	macron	most
+-?	acute	most
+-?	cedilla	most
+-?	left to right mark	char
+-?	right to left mark	char
+-?	paragraph marker	most
+-?	black square	some
+-?	black square	some
+-?	black square	some
+-?	white square	some
+-?	white bullet	some
+-?	right white arrow	some
+-?	right-pointing arrow	some
+-?	right arrowhead	some
+-?	black diamond minus white X	some
+-?	black club	some
+-?	black diamond	some
+-?	black diamond	some
+-?	section	all
+-?	degrees	some
+-?	double left pointing angle bracket	most	always
+-?	double right pointing angle bracket	most	always
+-?	micro	some
+-?	superscript 0	some
+-?	superscript 1	some
+-?	superscript 2	some
+-?	superscript 3	some
+-?	superscript 4	some
+-?	superscript 5	some
+-?	superscript 6	some
+-?	superscript 7	some
+-?	superscript 8	some
+-?	superscript 9	some
+-?	superscript plus	some
+-?	superscript equals	some
+-?	superscript left paren	some
+-?	superscript right paren	some
+-?	superscript n	some
+-?	subscript 0	some
+-?	subscript 1	some
+-?	subscript 2	some
+-?	subscript 3	some
+-?	subscript 4	some
+-?	subscript 5	some
+-?	subscript 6	some
+-?	subscript 7	some
+-?	subscript 8	some
+-?	subscript 9	some
+-?	subscript plus	some
+-?	subscript minus	some
+-?	subscript equals	some
+-?	subscript left paren	some
+-?	subscript right paren	some
+-?	registered	some
+-?	trademark	some
+-?	copyright	some
+-?	ServiceMark	some
+-?	left arrow	some
+-?	up arrow	some
+-?	right arrow	some
+-?	down arrow	some
+-?	check	some
+-?	check	some
+-?	right arrow	some
+-?	dagger	some
+-?	double dagger	some
+-?	triangular bullet	none
+-?	x-shaped bullet	none
+-?	circled plus	none
+-?	circled minus	none
+-?	right arrow over left arrow	none
+-?	double right arrow	none
+-
+-#Arithmetic operators
+-+	plus	some
+-?	minus	some
+-?	times	some
+-?	times	some
+-?	times	none
+-?	divided by	some
+-?	divided by	some
+-?	divide by	some
+-?	minus or plus	some
+-?	plus or Minus	some
+-
+-#Set operations
+-?	set minus	none
+-?	set union	none
+-?	power set of the set	none
+-?	power set of the set	none
+-?	power set of the set	none
+-?	complement of the set	none
+-
+-#Set relations and set constructions
+-?	empty set	none
+-?	subset of	none
+-?	not a subset of	none
+-?	superset of	none
+-?	not a superset of	none
+-?	subset of or equal to	none
+-?	neither a subset of nor equal to	none
+-?	superset of or equal to	none
+-?	neither a superset of nor equal to	none
+-?	multiset	none
+-
+-#Equality signs
+-=	equals	some
+-?	asymptotically equal to	none
+-?	not asymptotically equal to	none
+-?	approximately equal to	none
+-?	approximately but not actually equal to	none
+-?	almost Equal to	none
+-?	all equal to	none
+-?	equivalent to	none
+-?	not equivalent to	none
+-?	geometrically equivalent to	none
+-?	geometrically equal to	none
+-?	equiangular to	none
+-?	between	none
+-?	not equal to	none
+-?	identical to	none
+-?	strictly identical to	none
+-?	not identical to	none
+-?	similar to	none
+-?	estimates	none
+-?	questioned equal to	none
+-
+-#comparison signs
+-<	less	some
+->	greater	some
+-?	less- than or equal to	none
+-?	less- than or equal to	none
+-?	much smaller than	none
+-?	greater-than or equal to	none
+-?	greater-than or equal to	none
+-?	much bigger than	none
+-?	less than or greater than	none
+-?	greater than or less than	none
+-?	not less than	none
+-?	not greater than	none
+-
+-#Functions
+-?	inverse	some
+-?	ring Operator	none
+-?	partial derivative	none
+-?	gradient of	none
+-
+-#Geometry and linear Algebra
+-?	vector between	none
+-?	triangle	none
+-?	rectangle	none
+-?	right angle	none
+-?	angle	none
+-?	parallel to	none
+-?	not parallel to	none
+-?	perpendicular to	none
+-?	ortogonal to	none
+-?	norm of vector	none
+-?	normalizes	none
+-?	sine wave	none
+-?	measured Angle	none
+-?	spherical Angle	none
+-
+-#Logical operators
+-?	for all	none
+-?	there exists	none
+-?	there does not exist	none
+-?	does not imply	none
+-?	is implied by	none
+-
+-#Other mathematical Operators
+-?	element of	none
+-?	not an element of	none
+-?	small element of	none
+-?	contains as member	none
+-?	does not contain as member	none
+-?	small contains as member	none
+-?	end of proof	none
+-?	n-ary product	none
+-?	n-ary coproduct	none
+-?	n-ary summation	none
+-?	square root	none
+-?	cube root	none
+-?	fourth root	none
+-?	proportional to	none
+-?	infinity	none
+-?	and	none
+-?	or	none
+-?	not	none
+-?	intersection	none
+-?	union	none
+-?	integral	none
+-?	double Integral	none
+-?	triple Integral	none
+-?	contour Integral	none
+-?	surface Integral	none
+-?	volume Integral	none
+-?	clockwise Integral	none
+-?	clockwise contour Integral	none
+-?	anticlockwise Contour Integral	none
+-?	therefore	none
+-?	because	none
+-?	ratio	none
+-?	proportion	none
+-?	excess	none
+-?	geometric proportion	none
+-?	wreath product	none
+-?	difference between	none
+-?	approaches the limit	none
+-?	bullet Operator	none
+-?	divides	none
+-?	does not divide	none
+-?	colon equals	none
+-?	equals colon	none
+-?	precedes	none
+-?	succeeds	none
+-?	does not precede	none
+-?	does not succeed	none
+-
+-# Vulgar Fractions U+2150 to U+215E
+-?	one quarter	none
+-?	one half	none
+-?	three quarters	none
+-?	one seventh	none
+-?	one ninth	none
+-?	one tenth	none
+-?	one third	none
+-?	two thirds	none
+-?	one fifth	none
+-?	two fifths	none
+-?	three fifths	none
+-?	four fifths	none
+-?	one sixth	none
+-?	five sixths	none
+-?	one eighth	none
+-?	three eights	none
+-?	five eighths	none
+-?	seven eighths	none
+-
+-#Number sets
+-?	algebraic numbers	none
+-?	complex numbers	none
+-?	imaginary part of complex number	none
+-?	quaternions	none
+-?	natural numbers	none
+-?	nonnegative (whole) numbers	none
+-?	rational numbers	none
+-?	real numbers	none
+-?	real part of complex number	none
+-?	integers	none
+-?	aleph number	none
+-?	beth number	none
+-
+-# Miscellaneous Technical
+-?	mac Command key	none
+-?	mac Option key	none
+-
+-## 6-dot cell
+-### note: the character on the next line is U+2800 (braille space), not U+0020 (ASCII space)
+-?	space
+-?	braille 1
+-?	braille 2
+-?	braille 1 2
+-?	braille 3
+-?	braille 1 3
+-?	braille 2 3
+-?	braille 1 2 3
+-?	braille 4
+-?	braille 1 4
+-?	braille 2 4
+-?	braille 1 2 4
+-?	braille 3 4
+-?	braille 1 3 4
+-?	braille 2 3 4
+-?	braille 1 2 3 4
+-?	braille 5
+-?	braille 1 5
+-?	braille 2 5
+-?	braille 1 2 5
+-?	braille 3 5
+-?	braille 1 3 5
+-?	braille 2 3 5
+-?	braille 1 2 3 5
+-?	braille 4 5
+-?	braille 1 4 5
+-?	braille 2 4 5
+-?	braille 1 2 4 5
+-?	braille 3 4 5
+-?	braille 1 3 4 5
+-?	braille 2 3 4 5
+-?	braille 1 2 3 4 5
+-?	braille 6
+-?	braille 1 6
+-?	braille 2 6
+-?	braille 1 2 6
+-?	braille 3 6
+-?	braille 1 3 6
+-?	braille 2 3 6
+-?	braille 1 2 3 6
+-?	braille 4 6
+-?	braille 1 4 6
+-?	braille 2 4 6
+-?	braille 1 2 4 6
+-?	braille 3 4 6
+-?	braille 1 3 4 6
+-?	braille 2 3 4 6
+-?	braille 1 2 3 4 6
+-?	braille 5 6
+-?	braille 1 5 6
+-?	braille 2 5 6
+-?	braille 1 2 5 6
+-?	braille 3 5 6
+-?	braille 1 3 5 6
+-?	braille 2 3 5 6
+-?	braille 1 2 3 5 6
+-?	braille 4 5 6
+-?	braille 1 4 5 6
+-?	braille 2 4 5 6
+-?	braille 1 2 4 5 6
+-?	braille 3 4 5 6
+-?	braille 1 3 4 5 6
+-?	braille 2 3 4 5 6
+-?	braille 1 2 3 4 5 6
+-## 8-braille cell
+-?	braille 7
+-?	braille 1 7
+-?	braille 2 7
+-?	braille 1 2 7
+-?	braille 3 7
+-?	braille 1 3 7
+-?	braille 2 3 7
+-?	braille 1 2 3 7
+-?	braille 4 7
+-?	braille 1 4 7
+-?	braille 2 4 7
+-?	braille 1 2 4 7
+-?	braille 3 4 7
+-?	braille 1 3 4 7
+-?	braille 2 3 4 7
+-?	braille 1 2 3 4 7
+-?	braille 5 7
+-?	braille 1 5 7
+-?	braille 2 5 7
+-?	braille 1 2 5 7
+-?	braille 3 5 7
+-?	braille 1 3 5 7
+-?	braille 2 3 5 7
+-?	braille 1 2 3 5 7
+-?	braille 4 5 7
+-?	braille 1 4 5 7
+-?	braille 2 4 5 7
+-?	braille 1 2 4 5 7
+-?	braille 3 4 5 7
+-?	braille 1 3 4 5 7
+-?	braille 2 3 4 5 7
+-?	braille 1 2 3 4 5 7
+-?	braille 6 7
+-?	braille 1 6 7
+-?	braille 2 6 7
+-?	braille 1 2 6 7
+-?	braille 3 6 7
+-?	braille 1 3 6 7
+-?	braille 2 3 6 7
+-?	braille 1 2 3 6 7
+-?	braille 4 6 7
+-?	braille 1 4 6 7
+-?	braille 2 4 6 7
+-?	braille 1 2 4 6 7
+-?	braille 3 4 6 7
+-?	braille 1 3 4 6 7
+-?	braille 2 3 4 6 7
+-?	braille 1 2 3 4 6 7
+-?	braille 5 6 7
+-?	braille 1 5 6 7
+-?	braille 2 5 6 7
+-?	braille 1 2 5 6 7
+-?	braille 3 5 6 7
+-?	braille 1 3 5 6 7
+-?	braille 2 3 5 6 7
+-?	braille 1 2 3 5 6 7
+-?	braille 1 2 3 7
+-?	braille 1 4 5 6 7
+-?	braille 2 4 5 6 7
+-?	braille 1 2 4 5 6 7
+-?	braille 3 4 5 6 7
+-?	braille 1 3 4 5 6 7
+-?	braille 2 3 4 5 6 7
+-?	braille 1 2 3 4 5 6 7
+-?	braille 8
+-?	braille 1 8
+-?	braille 2 8
+-?	braille 1 2 8
+-?	braille 3 8
+-?	braille 1 3 8
+-?	braille 2 3 8
+-?	braille 1 2 3 8
+-?	braille 4 8
+-?	braille 1 4 8
+-?	braille 2 4 8
+-?	braille 1 2 4 8
+-?	braille 3 4 8
+-?	braille 1 3 4 8
+-?	braille 2 3 4 8
+-?	braille 1 2 3 4 8
+-?	braille 5 8
+-?	braille 1 5 8
+-?	braille 2 5 8
+-?	braille 1 2 5 8
+-?	braille 3 5 8
+-?	braille 1 3 5 8
+-?	braille 2 3 5 8
+-?	braille 1 2 3 5 8
+-?	braille 4 5 8
+-?	braille 1 4 5 8
+-?	braille 2 4 5 8
+-?	braille 1 2 4 5 8
+-?	braille 3 4 5 8
+-?	braille 1 3 4 5 8
+-?	braille 2 3 4 5 8
+-?	braille 1 2 3 4 5 8
+-?	braille 6 8
+-?	braille 1 6 8
+-?	braille 2 6 8
+-?	braille 1 2 6 8
+-?	braille 3 6 8
+-?	braille 1 3 6 8
+-?	braille 2 3 6 8
+-?	braille 1 2 3 6 8
+-?	braille 4 6 8
+-?	braille 1 4 6 8
+-?	braille 2 4 6 8
+-?	braille 1 2 4 6 8
+-?	braille 3 4 6 8
+-?	braille 1 3 4 6 8
+-?	braille 2 3 4 6 8
+-?	braille 1 2 3 4 6 8
+-?	braille 5 6 8
+-?	braille 1 5 6 8
+-?	braille 2 5 6 8
+-?	braille 1 2 5 6 8
+-?	braille 3 5 6 8
+-?	braille 1 3 5 6 8
+-?	braille 2 3 5 6 8
+-?	braille 1 2 3 5 6 8
+-?	braille 1 2 3 8
+-?	braille 1 4 5 6 8
+-?	braille 2 4 5 6 8
+-?	braille 1 2 4 5 6 8
+-?	braille 3 4 5 6 8
+-?	braille 1 3 4 5 6 8
+-?	braille 2 3 4 5 6 8
+-?	braille 1 2 3 4 5 6 8
+-?	braille 7 8
+-?	braille 1 7 8
+-?	braille 2 7 8
+-?	braille 1 2 7 8
+-?	braille 3 7 8
+-?	braille 1 3 7 8
+-?	braille 2 3 7 8
+-?	braille 1 2 3 7 8
+-?	braille 4 7 8
+-?	braille 1 4 7 8
+-?	braille 2 4 7 8
+-?	braille 1 2 4 7 8
+-?	braille 3 4 7 8
+-?	braille 1 3 4 7 8
+-?	braille 2 3 4 7 8
+-?	braille 1 2 3 4 7 8
+-?	braille 5 7 8
+-?	braille 1 5 7 8
+-?	braille 2 5 7 8
+-?	braille 1 2 5 7 8
+-?	braille 3 5 7 8
+-?	braille 1 3 5 7 8
+-?	braille 2 3 5 7 8
+-?	braille 1 2 3 5 7 8
+-?	braille 4 5 7 8
+-?	braille 1 4 5 7 8
+-?	braille 2 4 5 7 8
+-?	braille 1 2 4 5 7 8
+-?	braille 3 4 5 7 8
+-?	braille 1 3 4 5 7 8
+-?	braille 2 3 4 5 7 8
+-?	braille 1 2 3 4 5 7 8
+-?	braille 6 7 8
+-?	braille 1 6 7 8
+-?	braille 2 6 7 8
+-?	braille 1 2 6 7 8
+-?	braille 3 6 7 8
+-?	braille 1 3 6 7 8
+-?	braille 2 3 6 7 8
+-?	braille 1 2 3 6 7 8
+-?	braille 4 6 7 8
+-?	braille 1 4 6 7 8
+-?	braille 2 4 6 7 8
+-?	braille 1 2 4 6 7 8
+-?	braille 3 4 6 7 8
+-?	braille 1 3 4 6 7 8
+-?	braille 2 3 4 6 7 8
+-?	braille 1 2 3 4 6 7 8
+-?	braille 5 6 7 8
+-?	braille 1 5 6 7 8
+-?	braille 2 5 6 7 8
+-?	braille 1 2 5 6 7 8
+-?	braille 3 5 6 7 8
+-?	braille 1 3 5 6 7 8
+-?	braille 2 3 5 6 7 8
+-?	braille 1 2 3 5 6 7 8
+-?	braille 1 2 3 7 8
+-?	braille 1 4 5 6 7 8
+-?	braille 2 4 5 6 7 8
+-?	braille 1 2 4 5 6 7 8
+-?	braille 3 4 5 6 7 8
+-?	braille 1 3 4 5 6 7 8
+-?	braille 2 3 4 5 6 7 8
+-?	braille 1 2 3 4 5 6 7 8
+--- /dev/null
++++ b/locale/base/symbols.dic
+@@ -0,0 +1,626 @@
++?# This file was automatically generated by make import-symbols
++# DO NOT MODIFY IT!
++# See locale/README.md to know how to import dictionaries
++
++# A part of NonVisual Desktop Access (NVDA)
++# Copyright (c) 2011-2023 NVDA Contributors
++# This file is covered by the GNU General Public License.
++
++complexSymbols:
++# identifier	regexp
++# Sentence endings.
++. sentence ending	(?<=[^\s.])\.(?=[\"'??)\s]|$)
++! sentence ending	(?<=[^\s!])\!(?=[\"'??)\s]|$)
++? sentence ending	(?<=[^\s?])\?(?=[\"'??)\s]|$)
++# Phrase endings.
++; phrase ending	(?<=[^\s;]);(?=\s|$)
++: phrase ending	(?<=[^\s:]):(?=\s|$)
++# Others
++decimal point	(?<![^\d -])\.(?=\d)
++in-word '	(?<=[^\W_])['?]
++negative number	(?<!\w)[-?]{1}(?=[$???.]?\d)
++
++symbols:
++# identifier	replacement[[	level][	preserve]][	# display name]
++
++# Complex symbols
++. sentence ending	dot	all	always
++! sentence ending	bang	all	always
++? sentence ending	question	all	always
++; phrase ending	semi	most	always
++: phrase ending	colon	most	always
++decimal point		none	always
++in-word '	tick	all	norep
++negative number	minus	none	norep
++
++# Whitespace
++\0	blank	char	# null
++\t	tab
++\n	line feed	char
++\f	page break	none
++\r	carriage return	char
++ 	space	char
++?	space	char	# no-break space
++
++# Standard punctuation/symbols
++!	bang	all
++"	quote	most
++\#	number	some
++$	dollar	all	norep
++?	pound	all	norep
++?	euro	all	norep
++?	cents	all	norep
++?	yen	all	norep
++?	rupee	some	norep
++?	florin	all	norep
++?	currency sign	all	norep
++%	percent	some
++?	per mille	some
++&	and	some
++'	tick	all
++(	left paren	most	always
++)	right paren	most	always
++*	star	some
++,	comma	all	always
++?	ideographic comma	all	always
++?	arabic comma	all	always
++-	dash	most	always
++.	dot	some
++/	slash	some
++:	colon	most	norep
++;	semi	most
++?	arabic semicolon	most
++?	question	all
++?	arabic question mark	all
++@	at	some
++[	left bracket	most
++]	right bracket	most
++\\	backslash	most
++^	caret	most
++_	line	most
++`	graav	most
++{	left brace	most
++}	right brace	most
++|	bar	most
++?	broken bar	most
++~	tilda	most
++?	inverted exclamation point	some
++?	inverted question mark	some
++?	middle dot	most
++?	single low quote	most
++?	double low quote	most
++?	prime	some
++?	double prime	some
++?	triple prime	some
++
++# Other characters
++?	bullet	some
++?	dot dot dot	all	always
++...	dot dot dot	all	always
++?	left quote	most
++?	right quote	most
++?	left tick	most
++?	right tick	most
++?	en dash	most	always
++?	em dash	most	always
++?	soft hyphen	most
++?	hyphen bullet	none
++?	circle	most
++?	white circle	most
++?	diaeresis	most
++?	macron	most
++?	acute	most
++?	cedilla	most
++?	left to right mark	char
++?	right to left mark	char
++?	paragraph marker	most
++?	black square	some
++?	black square	some
++?	black square	some
++?	white square	some
++?	white bullet	some
++?	right white arrow	some
++?	right-pointing arrow	some
++?	right arrowhead	some
++?	black diamond minus white X	some
++?	black club	some
++?	black diamond	some
++?	black diamond	some
++?	section	all
++?	degrees	some
++?	double left pointing angle bracket	most	always
++?	double right pointing angle bracket	most	always
++?	micro	some
++?	superscript 0	some
++?	superscript 1	some
++?	superscript 2	some
++?	superscript 3	some
++?	superscript 4	some
++?	superscript 5	some
++?	superscript 6	some
++?	superscript 7	some
++?	superscript 8	some
++?	superscript 9	some
++?	superscript plus	some
++?	superscript equals	some
++?	superscript left paren	some
++?	superscript right paren	some
++?	superscript n	some
++?	subscript 0	some
++?	subscript 1	some
++?	subscript 2	some
++?	subscript 3	some
++?	subscript 4	some
++?	subscript 5	some
++?	subscript 6	some
++?	subscript 7	some
++?	subscript 8	some
++?	subscript 9	some
++?	subscript plus	some
++?	subscript minus	some
++?	subscript equals	some
++?	subscript left paren	some
++?	subscript right paren	some
++?	registered	some
++?	trademark	some
++?	copyright	some
++?	ServiceMark	some
++?	left arrow	some
++?	up arrow	some
++?	right arrow	some
++?	down arrow	some
++?	check	some
++?	check	some
++?	right arrow	some
++?	dagger	some
++?	double dagger	some
++?	triangular bullet	none
++?	x-shaped bullet	none
++?	circled plus	none
++?	circled minus	none
++?	right arrow over left arrow	none
++?	double right arrow	none
++
++#Arithmetic operators
+++	plus	some
++?	minus	some
++?	times	some
++?	times	some
++?	times	none
++?	divided by	some
++?	divided by	some
++?	divide by	some
++?	minus or plus	some
++?	plus or Minus	some
++
++#Set operations
++?	set minus	none
++?	set union	none
++?	power set of the set	none
++?	power set of the set	none
++?	power set of the set	none
++?	complement of the set	none
++
++#Set relations and set constructions
++?	empty set	none
++?	subset of	none
++?	not a subset of	none
++?	superset of	none
++?	not a superset of	none
++?	subset of or equal to	none
++?	neither a subset of nor equal to	none
++?	superset of or equal to	none
++?	neither a superset of nor equal to	none
++?	multiset	none
++
++#Equality signs
++=	equals	some
++?	asymptotically equal to	none
++?	not asymptotically equal to	none
++?	approximately equal to	none
++?	approximately but not actually equal to	none
++?	almost Equal to	none
++?	all equal to	none
++?	equivalent to	none
++?	not equivalent to	none
++?	geometrically equivalent to	none
++?	geometrically equal to	none
++?	equiangular to	none
++?	between	none
++?	not equal to	none
++?	identical to	none
++?	strictly identical to	none
++?	not identical to	none
++?	similar to	none
++?	estimates	none
++?	questioned equal to	none
++
++#comparison signs
++<	less	some
++>	greater	some
++?	less- than or equal to	none
++?	less- than or equal to	none
++?	much smaller than	none
++?	greater-than or equal to	none
++?	greater-than or equal to	none
++?	much bigger than	none
++?	less than or greater than	none
++?	greater than or less than	none
++?	not less than	none
++?	not greater than	none
++
++#Functions
++?	inverse	some
++?	ring Operator	none
++?	partial derivative	none
++?	gradient of	none
++
++#Geometry and linear Algebra
++?	vector between	none
++?	triangle	none
++?	rectangle	none
++?	right angle	none
++?	angle	none
++?	parallel to	none
++?	not parallel to	none
++?	perpendicular to	none
++?	ortogonal to	none
++?	norm of vector	none
++?	normalizes	none
++?	sine wave	none
++?	measured Angle	none
++?	spherical Angle	none
++
++#Logical operators
++?	for all	none
++?	there exists	none
++?	there does not exist	none
++?	does not imply	none
++?	is implied by	none
++
++#Other mathematical Operators
++?	element of	none
++?	not an element of	none
++?	small element of	none
++?	contains as member	none
++?	does not contain as member	none
++?	small contains as member	none
++?	end of proof	none
++?	n-ary product	none
++?	n-ary coproduct	none
++?	n-ary summation	none
++?	square root	none
++?	cube root	none
++?	fourth root	none
++?	proportional to	none
++?	infinity	none
++?	and	none
++?	or	none
++?	not	none
++?	intersection	none
++?	union	none
++?	integral	none
++?	double Integral	none
++?	triple Integral	none
++?	contour Integral	none
++?	surface Integral	none
++?	volume Integral	none
++?	clockwise Integral	none
++?	clockwise contour Integral	none
++?	anticlockwise Contour Integral	none
++?	therefore	none
++?	because	none
++?	ratio	none
++?	proportion	none
++?	excess	none
++?	geometric proportion	none
++?	wreath product	none
++?	difference between	none
++?	approaches the limit	none
++?	bullet Operator	none
++?	divides	none
++?	does not divide	none
++?	colon equals	none
++?	equals colon	none
++?	precedes	none
++?	succeeds	none
++?	does not precede	none
++?	does not succeed	none
++
++# Vulgar Fractions U+2150 to U+215E
++?	one quarter	none
++?	one half	none
++?	three quarters	none
++?	one seventh	none
++?	one ninth	none
++?	one tenth	none
++?	one third	none
++?	two thirds	none
++?	one fifth	none
++?	two fifths	none
++?	three fifths	none
++?	four fifths	none
++?	one sixth	none
++?	five sixths	none
++?	one eighth	none
++?	three eights	none
++?	five eighths	none
++?	seven eighths	none
++
++#Number sets
++?	algebraic numbers	none
++?	complex numbers	none
++?	imaginary part of complex number	none
++?	quaternions	none
++?	natural numbers	none
++?	nonnegative (whole) numbers	none
++?	rational numbers	none
++?	real numbers	none
++?	real part of complex number	none
++?	integers	none
++?	aleph number	none
++?	beth number	none
++
++# Miscellaneous Technical
++?	mac Command key	none
++?	mac Option key	none
++
++## 6-dot cell
++### note: the character on the next line is U+2800 (braille space), not U+0020 (ASCII space)
++?	space
++?	braille 1
++?	braille 2
++?	braille 1 2
++?	braille 3
++?	braille 1 3
++?	braille 2 3
++?	braille 1 2 3
++?	braille 4
++?	braille 1 4
++?	braille 2 4
++?	braille 1 2 4
++?	braille 3 4
++?	braille 1 3 4
++?	braille 2 3 4
++?	braille 1 2 3 4
++?	braille 5
++?	braille 1 5
++?	braille 2 5
++?	braille 1 2 5
++?	braille 3 5
++?	braille 1 3 5
++?	braille 2 3 5
++?	braille 1 2 3 5
++?	braille 4 5
++?	braille 1 4 5
++?	braille 2 4 5
++?	braille 1 2 4 5
++?	braille 3 4 5
++?	braille 1 3 4 5
++?	braille 2 3 4 5
++?	braille 1 2 3 4 5
++?	braille 6
++?	braille 1 6
++?	braille 2 6
++?	braille 1 2 6
++?	braille 3 6
++?	braille 1 3 6
++?	braille 2 3 6
++?	braille 1 2 3 6
++?	braille 4 6
++?	braille 1 4 6
++?	braille 2 4 6
++?	braille 1 2 4 6
++?	braille 3 4 6
++?	braille 1 3 4 6
++?	braille 2 3 4 6
++?	braille 1 2 3 4 6
++?	braille 5 6
++?	braille 1 5 6
++?	braille 2 5 6
++?	braille 1 2 5 6
++?	braille 3 5 6
++?	braille 1 3 5 6
++?	braille 2 3 5 6
++?	braille 1 2 3 5 6
++?	braille 4 5 6
++?	braille 1 4 5 6
++?	braille 2 4 5 6
++?	braille 1 2 4 5 6
++?	braille 3 4 5 6
++?	braille 1 3 4 5 6
++?	braille 2 3 4 5 6
++?	braille 1 2 3 4 5 6
++## 8-braille cell
++?	braille 7
++?	braille 1 7
++?	braille 2 7
++?	braille 1 2 7
++?	braille 3 7
++?	braille 1 3 7
++?	braille 2 3 7
++?	braille 1 2 3 7
++?	braille 4 7
++?	braille 1 4 7
++?	braille 2 4 7
++?	braille 1 2 4 7
++?	braille 3 4 7
++?	braille 1 3 4 7
++?	braille 2 3 4 7
++?	braille 1 2 3 4 7
++?	braille 5 7
++?	braille 1 5 7
++?	braille 2 5 7
++?	braille 1 2 5 7
++?	braille 3 5 7
++?	braille 1 3 5 7
++?	braille 2 3 5 7
++?	braille 1 2 3 5 7
++?	braille 4 5 7
++?	braille 1 4 5 7
++?	braille 2 4 5 7
++?	braille 1 2 4 5 7
++?	braille 3 4 5 7
++?	braille 1 3 4 5 7
++?	braille 2 3 4 5 7
++?	braille 1 2 3 4 5 7
++?	braille 6 7
++?	braille 1 6 7
++?	braille 2 6 7
++?	braille 1 2 6 7
++?	braille 3 6 7
++?	braille 1 3 6 7
++?	braille 2 3 6 7
++?	braille 1 2 3 6 7
++?	braille 4 6 7
++?	braille 1 4 6 7
++?	braille 2 4 6 7
++?	braille 1 2 4 6 7
++?	braille 3 4 6 7
++?	braille 1 3 4 6 7
++?	braille 2 3 4 6 7
++?	braille 1 2 3 4 6 7
++?	braille 5 6 7
++?	braille 1 5 6 7
++?	braille 2 5 6 7
++?	braille 1 2 5 6 7
++?	braille 3 5 6 7
++?	braille 1 3 5 6 7
++?	braille 2 3 5 6 7
++?	braille 1 2 3 5 6 7
++?	braille 1 2 3 7
++?	braille 1 4 5 6 7
++?	braille 2 4 5 6 7
++?	braille 1 2 4 5 6 7
++?	braille 3 4 5 6 7
++?	braille 1 3 4 5 6 7
++?	braille 2 3 4 5 6 7
++?	braille 1 2 3 4 5 6 7
++?	braille 8
++?	braille 1 8
++?	braille 2 8
++?	braille 1 2 8
++?	braille 3 8
++?	braille 1 3 8
++?	braille 2 3 8
++?	braille 1 2 3 8
++?	braille 4 8
++?	braille 1 4 8
++?	braille 2 4 8
++?	braille 1 2 4 8
++?	braille 3 4 8
++?	braille 1 3 4 8
++?	braille 2 3 4 8
++?	braille 1 2 3 4 8
++?	braille 5 8
++?	braille 1 5 8
++?	braille 2 5 8
++?	braille 1 2 5 8
++?	braille 3 5 8
++?	braille 1 3 5 8
++?	braille 2 3 5 8
++?	braille 1 2 3 5 8
++?	braille 4 5 8
++?	braille 1 4 5 8
++?	braille 2 4 5 8
++?	braille 1 2 4 5 8
++?	braille 3 4 5 8
++?	braille 1 3 4 5 8
++?	braille 2 3 4 5 8
++?	braille 1 2 3 4 5 8
++?	braille 6 8
++?	braille 1 6 8
++?	braille 2 6 8
++?	braille 1 2 6 8
++?	braille 3 6 8
++?	braille 1 3 6 8
++?	braille 2 3 6 8
++?	braille 1 2 3 6 8
++?	braille 4 6 8
++?	braille 1 4 6 8
++?	braille 2 4 6 8
++?	braille 1 2 4 6 8
++?	braille 3 4 6 8
++?	braille 1 3 4 6 8
++?	braille 2 3 4 6 8
++?	braille 1 2 3 4 6 8
++?	braille 5 6 8
++?	braille 1 5 6 8
++?	braille 2 5 6 8
++?	braille 1 2 5 6 8
++?	braille 3 5 6 8
++?	braille 1 3 5 6 8
++?	braille 2 3 5 6 8
++?	braille 1 2 3 5 6 8
++?	braille 1 2 3 8
++?	braille 1 4 5 6 8
++?	braille 2 4 5 6 8
++?	braille 1 2 4 5 6 8
++?	braille 3 4 5 6 8
++?	braille 1 3 4 5 6 8
++?	braille 2 3 4 5 6 8
++?	braille 1 2 3 4 5 6 8
++?	braille 7 8
++?	braille 1 7 8
++?	braille 2 7 8
++?	braille 1 2 7 8
++?	braille 3 7 8
++?	braille 1 3 7 8
++?	braille 2 3 7 8
++?	braille 1 2 3 7 8
++?	braille 4 7 8
++?	braille 1 4 7 8
++?	braille 2 4 7 8
++?	braille 1 2 4 7 8
++?	braille 3 4 7 8
++?	braille 1 3 4 7 8
++?	braille 2 3 4 7 8
++?	braille 1 2 3 4 7 8
++?	braille 5 7 8
++?	braille 1 5 7 8
++?	braille 2 5 7 8
++?	braille 1 2 5 7 8
++?	braille 3 5 7 8
++?	braille 1 3 5 7 8
++?	braille 2 3 5 7 8
++?	braille 1 2 3 5 7 8
++?	braille 4 5 7 8
++?	braille 1 4 5 7 8
++?	braille 2 4 5 7 8
++?	braille 1 2 4 5 7 8
++?	braille 3 4 5 7 8
++?	braille 1 3 4 5 7 8
++?	braille 2 3 4 5 7 8
++?	braille 1 2 3 4 5 7 8
++?	braille 6 7 8
++?	braille 1 6 7 8
++?	braille 2 6 7 8
++?	braille 1 2 6 7 8
++?	braille 3 6 7 8
++?	braille 1 3 6 7 8
++?	braille 2 3 6 7 8
++?	braille 1 2 3 6 7 8
++?	braille 4 6 7 8
++?	braille 1 4 6 7 8
++?	braille 2 4 6 7 8
++?	braille 1 2 4 6 7 8
++?	braille 3 4 6 7 8
++?	braille 1 3 4 6 7 8
++?	braille 2 3 4 6 7 8
++?	braille 1 2 3 4 6 7 8
++?	braille 5 6 7 8
++?	braille 1 5 6 7 8
++?	braille 2 5 6 7 8
++?	braille 1 2 5 6 7 8
++?	braille 3 5 6 7 8
++?	braille 1 3 5 6 7 8
++?	braille 2 3 5 6 7 8
++?	braille 1 2 3 5 6 7 8
++?	braille 1 2 3 7 8
++?	braille 1 4 5 6 7 8
++?	braille 2 4 5 6 7 8
++?	braille 1 2 4 5 6 7 8
++?	braille 3 4 5 6 7 8
++?	braille 1 3 4 5 6 7 8
++?	braille 2 3 4 5 6 7 8
++?	braille 1 2 3 4 5 6 7 8
diff -Nru speech-dispatcher-0.12.0/debian/patches/series speech-dispatcher-0.12.0/debian/patches/series
--- speech-dispatcher-0.12.0/debian/patches/series	2025-05-06 21:20:14.000000000 +0200
+++ speech-dispatcher-0.12.0/debian/patches/series	2025-07-02 01:34:43.000000000 +0200
@@ -3,3 +3,4 @@
 mbrola-paths
 output-stuck
 git-generic-empty
+git-punctuation
diff -Nru speech-dispatcher-0.12.0/debian/rules speech-dispatcher-0.12.0/debian/rules
--- speech-dispatcher-0.12.0/debian/rules	2025-04-10 10:30:05.000000000 +0200
+++ speech-dispatcher-0.12.0/debian/rules	2025-06-21 17:35:20.000000000 +0200
@@ -48,9 +48,14 @@
 override_dh_auto_configure-indep: config/modules/espeak-ng-mbrola-generic.conf
 	dh_auto_configure -- $(CONFIGURE)
 
-override_dh_auto_install:
+override_dh_auto_build:
 	# Bug#950793
-	@echo blhc: ignore-line-regexp: libtool: link:.*
+	@echo blhc: ignore-line-regexp: '.* "sd_.*S.c".*'
+	@echo blhc: ignore-line-regexp: '.* -o .libs/libspeechd_module.so.*'
+	@echo blhc: ignore-line-regexp: '.* -o .libs/sd_.*'
+	dh_auto_build
+
+override_dh_auto_install:
 	dh_auto_install --destdir=debian/tmp
 
 ifeq ($(DEB_SOURCE),speech-dispatcher)


More information about the Tts-project mailing list