escape characters in text filter

This commit is contained in:
jb-alvarado 2022-10-30 10:14:05 +01:00
parent c009a0172c
commit 76e26f0f70
2 changed files with 12 additions and 3 deletions

View File

@ -35,7 +35,16 @@ struct TextFilter {
impl fmt::Display for TextFilter {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let mut s = format!("text='{}'", self.text.clone().unwrap_or_default());
let escaped_text = self
.text
.clone()
.unwrap_or_default()
.replace('\'', "'\\\\\\''")
.replace('\\', "\\\\\\\\")
.replace('%', "\\\\\\%")
.replace(':', "\\:");
let mut s = format!("text='{escaped_text}'");
if let Some(v) = &self.x {
if !v.is_empty() {

View File

@ -40,11 +40,11 @@ pub fn filter_node(
.to_string(),
};
let escape = text
let escaped_text = text
.replace('\'', "'\\\\\\''")
.replace('%', "\\\\\\%")
.replace(':', "\\:");
filter = format!("drawtext=text='{escape}':{}{font}", config.text.style)
filter = format!("drawtext=text='{escaped_text}':{}{font}", config.text.style)
} else if let Some(socket) = zmq_socket {
let mut filter_cmd = format!("text=''{font}");